Django 通用视图 - 访问请求

发布于 2024-09-17 01:18:03 字数 288 浏览 6 评论 0原文

我正在使用 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')),
)

I am using django generic views, how do I get access to the request in my template.

URLs:

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')),
)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

守不住的情 2024-09-24 01:18:03

经过一番搜索,同时等待人们回复。我发现:

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

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

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

After some more searching, while waiting on people to reply to this. I found:

You need to add this to your settings.py

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

This means that by default the request will be passed to all templates!

白鸥掠海 2024-09-24 01:18:03

给出的答案都没有解决我的问题,因此对于那些偶然发现这个问题想要访问通用视图模板中的请求对象的人,您可以在 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 ) )

干杯!

None of the answers given solved my issue, so for those others who stumbled upon this wanting access to the request object within a generic view template you can do something like this in your 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/

Cheers!

, ReqListView.as_view( # your options ) )

Cheers!

開玄 2024-09-24 01:18:03

尝试使用 get_queryset 方法。

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

请参阅链接(希望有帮助):-
查看 Greg Aker 的页面...< /a>

Try using the get_queryset method.

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

see link (hope it helps):-
See Greg Aker's page...

日久见人心 2024-09-24 01:18:03

对我有用的是添加:

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

添加到 settings.py 而不是 urls.py

What works for me was to add:

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

To the the settings.py not to the urls.py

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文