【问题标题】:Django Generic View - Access to requestDjango 通用视图 - 访问请求
【发布时间】:2011-04-06 03:45:46
【问题描述】:

我正在使用 django 通用视图,如何访问我的模板中的请求。

网址:

file_objects = {
    'queryset' : File.objects.filter(is_good=True),
}
urlpatterns = patterns('',
    (r'^files/', 'django.views.generic.list_detail.object_list', dict(file_objects, template_name='files.html')),
)

【问题讨论】:

    标签: django django-generic-views


    【解决方案1】:

    经过一番搜索,等待人们回复此问题。我发现:

    您需要将此添加到您的 settings.py 中

    TEMPLATE_CONTEXT_PROCESSORS = (
        'django.core.context_processors.request',
    )
    

    这意味着默认情况下请求将被传递给所有模板!

    【讨论】:

    • 并非严格意义上的正确 - 它将传递给使用 RequestContext 呈现的所有模板,所有通用视图都是。
    • 这对我不起作用,四年半后使用 Django 1.7。事实上,1.7 文档在 docs.djangoproject.com/en/1.7/ref/settings 的顶部有一条警告 - “覆盖设置时要小心,尤其是当默认值是非空元组或字典时,例如 MIDDLEWARE_CLASSES 和 TEMPLATE_CONTEXT_PROCESSORS。确保保留组件您希望使用的 Django 功能所要求的。”。但是请参阅此处以获取解决方案:stackoverflow.com/questions/9899113/…
    【解决方案2】:

    给出的答案都没有解决我的问题,因此对于那些偶然发现想要在通用视图模板中访问请求对象的其他人,您可以在 urls.py 中执行类似的操作:

    from django.views.generic import ListView
    
    class ReqListView(ListView):
        def get_context_data(self, **kwargs):
            # Call the base implementation first to get a context
            c = super(ReqListView, self).get_context_data(**kwargs)
            # add the request to the context
            c.update({ 'request': self.request })
            return c
    
    url(r'^yourpage/$',
        ReqListView.as_view(
            # your options
        )
    )
    

    干杯!

    【讨论】:

      【解决方案3】:

      尝试使用 get_queryset 方法。

      def get_queryset(self):
          return Post.objects.filter(author=self.request.user)
      

      查看链接(希望对您有所帮助):- See Greg Aker's page...

      【讨论】:

      【解决方案4】:

      对我有用的是添加:

      TEMPLATE_CONTEXT_PROCESSORS = ("django.contrib.auth.context_processors.auth",
                                 "django.core.context_processors.request",
                                 )
      

      到 settings.py 而不是 urls.py

      【讨论】:

        猜你喜欢
        • 2021-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-28
        • 1970-01-01
        • 2014-12-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多