【问题标题】:How to replace Pinax template view for home to a normal view?如何将主页的 Pinax 模板视图替换为普通视图?
【发布时间】:2013-04-21 11:48:42
【问题描述】:

我刚刚在 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',则变量填充正确。但我想让它们像以前一样自动填充。

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

我做错了什么?

【问题讨论】:

    标签: django pinax


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 2018-04-29
      • 2018-01-06
      相关资源
      最近更新 更多