首页 > 解决方案 > 如何在扩展的 Django 模板中发出 GET 请求

问题描述

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

base.html:

<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>

标签: pythondjango

解决方案


有几种方法:

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

每种方法都有其自身的权衡。由于您正在尝试显示动态数据,因此请注意您自己的缓存或访问过多的外部服务会减慢渲染速度(这样您就不会使其阻塞)。


推荐阅读