当前位置: 首页 > 面试题库 >

Django,模板上下文处理器

景令秋
2023-03-14
问题内容

我有一个奇怪的问题,我想使用上下文处理器添加全局查询。这是我通过以下方法做到的:

这样在我的应用中创建了一个processor.py:

from myproject.myapp.models import Foo

def foos(request):
    return {'foos': Foo.objects.all()}

并在我的setting.py结尾处添加了以下内容:

TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)

最后,我通过以下观点:

def index_view(request):

    return render_to_response('index.html', {}, context_instance=RequestContext(request))

在我的index.html模板上:

<select id="select_foo">
{% for foo in foos %}
    <option value="/{{ foo.slug }}">{{ foo.name }}</option>
{% endfor %}
</select>

最后是我的网址:

(r'^$', 'myapp.views.index_view'),

我的foos显示没有问题,但是我的media_url和其他上下文消失了。可能是什么问题


问题答案:

当你指定时:

TEMPLATE_CONTEXT_PROCESSORS = ('myapp.processor.foos',)

在设置文件中,你将覆盖Django的默认上下文处理器。为了扩展列表,你需要在设置中包括默认值:

TEMPLATE_CONTEXT_PROCESSORS = (
    "django.core.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "myapp.processor.foos",
)

请注意,以上设置是django 1.1的默认设置(加上你的处理器)。



 类似资料:
  • 问题内容: 我正在Django(1.11)上编写自己的自定义,并从auth0获取经过身份验证的用户的信息。这不是我第一次写它,我也不知道这个错误是从哪里来的: ImportError:模块“ auth.context_processors”未定义“ auth0_processors”属性/类 看起来是这样的: auth / settings.py: auth / context_processor

  • 什么是模板 你一定听说过一种叫做MVC的设计模式,Model处理数据,View展现结果,Controller控制用户的请求,至于View层的处理,在很多动态语言里面都是通过在静态HTML中插入动态语言生成的数据,例如JSP中通过插入<%=....=%>,PHP中通过插入<?php.....?>来实现的。 通过下面这个图可以说明模板的机制 图7.1 模板机制图 Web应用反馈给客户端的信息中的大部分

  • 问题内容: 我正在为一家小型公司的小型Intranet网站工作,用户应该可以在其中发布信息。我想象过一种非常简单的身份验证机制,人们只需输入他们的电子邮件地址,并向其发送唯一的登录网址即可,该网址设置了一个cookie,该cookie可以始终为将来的请求标识他们。 在我的模板设置中,我有base.html,其他页面对此进行了扩展。我想在base.html中显示“登录”或“注册”按钮,但是如何确保必

  • beego 的模板处理引擎采用的是 Go 内置的 html/template 包进行处理,而且 beego 的模板处理逻辑是采用了缓存编译方式,也就是所有的模板会在 beego 应用启动的时候全部编译然后缓存在 map 里面。 模板目录 beego 中默认的模板目录是 views,用户可以把模板文件放到该目录下,beego 会自动在该目录下的所有模板文件进行解析并缓存,开发模式下每次都会重新解析,

  • 问题内容: 我已经到了需要将某些变量传递到所有视图的地步(主要是自定义身份验证类型变量)。 有人告诉我编写自己的上下文处理器是执行此操作的最佳方法,但是我遇到了一些问题。 我的设置文件如下所示 如你所见,我有一个名为“ context_processors”的模块和一个名为“ say_hello”的函数。 看起来像 我是否可以假设自己现在可以在我的观点范围内进行以下操作? 现在,这在我的模板中什么

  • 问题内容: 我正在尝试使用Django,并弄清楚如何设置urls.py以及URL如何工作。我已经在项目的根目录中配置了urls.py,以定向到我的博客和管理员。但是,现在我想在首页添加一个页面,所以在。 因此,我在项目根目录的urls.py中添加了以下代码: 问题是它在blog / templates / …中搜索模板, 而不是在我的根目录中搜索template文件夹。其中包含base.html。