代码之家  ›  专栏  ›  技术社区  ›  Bastian

如何将主页的Pinax模板视图替换为普通视图?

  •  0
  • Bastian  · 技术社区  · 13 年前

    我刚刚在Django 1.4.5上安装了Pinax,在URL中,主页是TemplateView。我想在主页中添加一些逻辑,所以我评论了那个url,并创建了一个新的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”,变量就会正确填充。但我想让他们像以前一样自动填写。

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

    我做错了什么?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Burhan Khalid    13 年前

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

    解决此问题的最快方法是使用 render shortcut ,在正确的上下文中自动通过:

    from django.shortcuts import render
    
    def home(request):
        return render(request, 'homepage.html', {})
    
    推荐文章