我刚刚在Django 1.4.5上安装了Pinax,在url中主页是一个TemplateView。我想在主页中添加一些逻辑,所以我注释了那个url并创建了一个链接到一个名为home的视图的新url。目前我在该视图中什么都不做,我只是想重现与TemplateView相同的行为,即加载模板。模板加载,但我松散的Pinax变量,作为SITE_NAME(我设置了网站名称,它确实出现时直接加载模板与TemplateView)。
这是原始url:
url(r"^$", TemplateView.as_view(template_name="homepage.html"), name="home"),
我是这样用的:
url(r"^$", home, name="home"),
home是从一个新创建的应用程序中加载的(通过manage.py startapp,该文件夹与manage.py处于同一级别,而不是在项目的文件夹中)
,连接到home的视图为:
def home(request):
context = {}
return render_to_response('homepage.html', context)
如果我添加一些上下文,如'SITE_NAME': 'my site',则变量被正确填充。但是我想让它们像以前一样自动填充。
更糟糕的是,当我尝试登录主页时,尽管用户已正确登录(当前登录用户的帐户设置显示正确),但仍显示"已注销"版本。
我做错了什么?
您在返回响应时重置了上下文-因为您没有传递RequestContext
的实例。
render
快捷键,它会在正确的上下文中自动传递:
from django.shortcuts import render
def home(request):
return render(request, 'homepage.html', {})