0

我刚刚在 Django 1.4.5 上安装了 Pinax,在 urls 中主页是一个 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': 'my site',则变量会正确填充。但我想让它们像以前一样自动填充。

更糟糕的是,当我尝试登录时,尽管用户已正确登录,但主页仍然显示“已注销”版本(当前登录用户的帐户设置正确显示)。

我做错了什么?

4

1 回答 1

1

您在返回响应时重置了上下文 - 因为您没有传入RequestContext.

解决此问题的最快方法是使用render快捷方式,它会自动传递正确的上下文:

from django.shortcuts import render

def home(request):
    return render(request, 'homepage.html', {})
于 2013-04-21T12:03:46.297 回答