首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在扩展Django模板中发出GET请求

如何在扩展Django模板中发出GET请求
EN

Stack Overflow用户
提问于 2021-04-20 10:22:57
回答 3查看 77关注 0票数 1

我有一个简单的导航栏base.html,其中包含指向其他页面的链接。目前,我正在扩展我所有其他页面上的base.html模板。我想从天气API调用GET请求,以便显示简单的信息,如城市名称和当前温度,并将其显示在导航栏上。由于base.html模板没有链接到视图本身,所以我不确定如何实现。我已经成功地从API中获得了信息,并在测试页面中显示了这些信息。

base.html:

代码语言:javascript
复制
<body>
    <div class="container-fluid bg-light">
        <div class="d-flex flex-wrap align-items-center justify-content-center justify-content-lg-start">
            <i class="far fa-newspaper fa-5x"></i>
            <a href="{% url 'news_list:homepage' %}" class="nav-link link-dark display-4">Ziņu portāls</a>
            <ul class="nav align-items-center ms-auto me-auto">
                <li><a href="{% url 'news_list:all_posts' %}" class="nav-link link-dark pt-4"><h2>Visi raksti</h2></a></li>
                <li><a href="{% url 'news_list:new_post' %}" class="nav-link link-dark pt-4"><h2>Pievienot rakstu</h2></a></li>
                <li><h2>Information from API</h2></a></li>
            </ul>
        </div>
        <hr/>
    </div>
    {% block content %}{% endblock content %}
 </body>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-04-20 10:34:23

有几种方法:

  1. 您可以实现一个自定义模板标签
  2. 您可以编写自己的自定义上下文处理器,并将其注入每个呈现的模板在这里输入链接描述中。

每种方法都有其各自的取舍。由于您正在尝试显示动态数据,请注意您自己的缓存或过多的外部服务,这些服务会减慢呈现速度(这样就不会使其阻塞)。

票数 1
EN

Stack Overflow用户

发布于 2021-04-20 10:40:01

创建模板上下文处理器,如这个答案中所示

然后,您将希望将其呈现到base.html中,以便应用于应用程序中的所有模板。

票数 0
EN

Stack Overflow用户

发布于 2021-04-20 10:51:05

尝试自定义模板标记。所涉步骤:

  1. 使用templatetags创建与视图相同级别的目录__init__.py
  2. templatetags中创建一个名为make_get_request.py的文件
  3. 在该文件中,输入如下内容:
代码语言:javascript
复制
from django import template

register = template.Library()

@register.filter(name = 'get_request')
def get_request():
    #make your request here
    #return a list, dict etc. with the info you need
  1. 重新启动服务器。
  2. 在模板中,编写{% load make_get_requests %},即文件名。
  3. 使用模板中的函数,如:
代码语言:javascript
复制
{% get_request %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67177026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档