【问题标题】:about django templates and global variables关于 django 模板和全局变量
【发布时间】:2014-02-09 11:22:54
【问题描述】:

我有一个skeleton.html 模板,并且我的博客中有一个档案箱。所以我必须在我的视图中更新每个功能,或者有一种简单的方法可以做到这一点?就像一个全局变量需要最新和最新帖子的年份然后我将在我的模板中使用?

当我扩展另一个模板时:

{% extends "base.html" %}
{% load static %}

{% block title %}{{ title }}{% endblock %}

{% block css %}<link rel="stylesheet" href="{% static "css/style.css" %}"/>{% endblock %}

{% block contentRight %}
<div id="search">
    <h2>Search</h2>
    <form action="#" method="POST">
        <input type="text" name="searchbox"/>
        <input type="submit" name="submit" value="Search"/>
    </form>
</div>
<div id="archives">
    <h2>Archives</h2>
    <ul>
        <li><a href="#">2013</a></li>
        <li><a href="#">2012</a></li>
        <li><a href="#">2011</a></li>
    </ul>
</div>
{% endblock %}

标题在我的views.py主函数中,当我创建另一个html文件并扩展索引并传递标题块时,它什么也不加载... 对不起我糟糕的英语和noobish问题~我是django的新手

【问题讨论】:

标签: django templates variables global


【解决方案1】:

你可以定义你自己的RequestContext processor,在years_processor查询你想要的年份:

def years_processor(request):
    return {'years': range(2013, 2010, -1)}

将其添加到TEMPLATE_CONTEXT_PROCESSORS,然后在您的每个模板中直接使用years

<ul>
    {% for year in years %}
        <li><a href="#">{{ year }}</a></li>
    {% endfor %}
</ul>

请记住,您应该使用 render 或显式传递上下文。

【讨论】:

  • 我可以在一个函数中添加我的所有自定义请求上下文变量吗?这将对速度或其他方面有效吗?
  • @user3289406 你可以指定 context_instance。
  • 你能举个例子吗? (我的意思是 def 处理器(请求):那么我所有的变量都会去那里我要求它)
  • @user3289406 你看到我在答案中提供的链接了吗?在那个页面找到some_view
  • 所以你可以说我可以在我的视图中在我的其他功能中使用我的处理器吗?我试过了,但失败了
猜你喜欢
  • 2011-01-14
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
相关资源
最近更新 更多