2024-06-11 00:44:39 发布
网友
我有一个Django网站如下:
所以到现在为止一切都很好。所以现在我们有了站点的主要负责人(它存在于基础模板中),它对所有视图都是通用的。在
但现在我想让它成为动态的,并添加一些动态数据。我应该从哪个角度出发?我所有的观点基本上都是render_to_response('viewtemplate.html', someContext)。那么如何将公共视图添加到基础模板中呢?在
render_to_response('viewtemplate.html', someContext)
很明显,我不会将公共代码复制到每个单独的视图。。。在
我想我在Django的MVT基础上遗漏了一些基本的东西。在
或者使用generic view,因为它们会自动传递请求上下文。
可以使用一个简单的直接到模板的通用视图来避免在请求上下文中导入/传递。
您想使用context_instance和RequestContexts
context_instance
RequestContext
首先,在views.py的顶部添加:
views.py
from django.template import RequestContext
然后,将所有视图更新为:
在您的settings.py中,添加:
settings.py
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.auth', ... 'myproj.app.context_processors.dynamic', 'myproj.app.context_processors.sidebar', 'myproj.app.context_processors.etc', )
这些context_processors都是一个函数,接受request对象并以字典的形式返回上下文。只需将context_processors.py中的所有函数放入相应的应用程序中。例如,博客可能有一个侧边栏,其中列出了最近的条目和评论。context_processors.py只定义:
context_processors
request
context_processors.py
def sidebar(request): recent_entry_list = Entry.objects... recent_comment_list = Comment.objects... return {'recent_entry_list': recent_entry_list, 'recent_comment_list': recent_comment_list}
你可以添加任意多个或少个。
更多信息,请查看Django Template Docs。
上下文处理器和RequestContext(见泰勒的回答)是获取每次页面加载时使用的数据的方法。对于各种视图(但不是所有视图)上可能需要的数据(尤其是那些与视图的主要用途不相关但显示在导航侧栏中的数据),通常最好定义一个自定义模板标记来检索数据。
或者使用generic view,因为它们会自动传递请求上下文。
可以使用一个简单的直接到模板的通用视图来避免在请求上下文中导入/传递。
您想使用
context_instance
和RequestContext
s首先,在
views.py
的顶部添加:然后,将所有视图更新为:
^{pr2}$在您的
settings.py
中,添加:这些
context_processors
都是一个函数,接受request
对象并以字典的形式返回上下文。只需将context_processors.py
中的所有函数放入相应的应用程序中。例如,博客可能有一个侧边栏,其中列出了最近的条目和评论。context_processors.py
只定义:你可以添加任意多个或少个。
更多信息,请查看Django Template Docs。
上下文处理器和RequestContext(见泰勒的回答)是获取每次页面加载时使用的数据的方法。对于各种视图(但不是所有视图)上可能需要的数据(尤其是那些与视图的主要用途不相关但显示在导航侧栏中的数据),通常最好定义一个自定义模板标记来检索数据。
相关问题 更多 >
编程相关推荐