如何将家的Pinax模板视图替换为普通视图?
问题描述:
我刚刚在Django 1.4.5上安装了Pinax,并在主页上安装了TemplateView。我想在主页中添加一些逻辑,所以我评论这个url并创建了一个链接到一个名为home的视图的新链接。目前我在这个视图中什么都不做,我只想重现与TemplateView中相同的行为,即加载模板。模板加载但我放弃Pinax变量,因为SITE_NAME(我确实设置了站点名称,并且在直接使用TemplateView加载模板时出现)。如何将家的Pinax模板视图替换为普通视图?
这是原来的网址:
url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
这是我用:
url(r"^$", home, name="home"),
家从刚创建的应用程序加载(与manage.py的startApp,该文件夹是在与manage.py同级别,不在项目文件夹内)
并且连接到家的视图是:
def home(request):
context = {}
return render_to_response('homepage.html', context)
如果我添加一些上下文,如'SITE_NAME':'我的网站',变量会被正确填充。但我希望像以前一样自动填充它们。
更糟糕的是,当我尝试登录主页时,虽然用户已正确登录(帐户设置为当前登录的用户正确显示),但仍显示“已注销”版本。
我做错了什么?
答
当您返回响应时,您已重置上下文 - 因为您未通过RequestContext
的实例。
解决这个最快捷的方法是使用render
shortcut,自动通过在正确的上下文:
from django.shortcuts import render
def home(request):
return render(request, 'homepage.html', {})
感谢布尔汗!它总是感觉... – Bastian 2013-04-21 12:08:28