我刚刚在Django 1.4.5上安装了Pinax,在主页中主页是TemplateView。我想在主页中添加一些逻辑,所以我评论了这个url并创建了一个新的链接到一个名为home的视图。目前我在该视图中什么都不做,我只想重现与TemplateView中相同的行为,即加载模板。模板加载但我松开了Pinax变量,就像SITE_NAME一样(我确实设置了站点名称,并且在使用TemplateView直接加载模板时出现了它)。
这是原始网址:
url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
这就是我使用的:
url(r"^$", home, name="home"),
home从新创建的应用程序加载(使用manage.py startapp,该文件夹与manage.py处于同一级别,不在项目文件夹中)
和连接到家的视图是:
def home(request):
context = {}
return render_to_response('homepage.html', context)
如果我添加一些上下文,例如“SITE_NAME”:“我的网站”,则会正确填充变量。但我想像以前一样自动填充它们。
更糟糕的是,当我尝试登录主页时仍会显示“已注销”版本,尽管用户已正确登录(帐户设置正确显示当前登录的用户)。
我做错了什么?
答案 0 :(得分:1)
您在返回响应时已重置上下文 - 因为您未传入RequestContext
的实例。
解决此问题的最快方法是使用render
shortcut,它会自动传递到正确的上下文中:
from django.shortcuts import render
def home(request):
return render(request, 'homepage.html', {})