如何从Django中的urls.py访问HttpRequest

时间:2011-01-29 17:59:33

标签: python django django-urls

基本上我想使用一个基于用户名列出对象的通用视图。现在,问题是,我该怎么做:

(r'^resources/$',
  ListView.as_view(
    queryset=Resources.objects.filter(user=request.user.username),
    ...
  )
)

我无法找到访问HttpRequest(请求)对象的方法...或者我是否需要使用自己的视图并在那里进行所有对象选择?

2 个答案:

答案 0 :(得分:4)

您可以尝试继承通用视图:

class PublisherListView(ListView):
    def get_queryset(self):
        return Resources.objects.filter(user=self.request.user.username)

然后您的网址条目如下:

(r'^resources/$',
  PublisherListView.as_view(
    ...
  )
)

有关基于类的视图中的动态过滤的更多信息,请访问:http://docs.djangoproject.com/en/dev/topics/class-based-views/#dynamic-filtering

答案 1 :(得分:3)

如果你真的想直接弄乱你的URLconf,你可以这样做:

(r'^resources/$',
 lambda request: ListView.as_view(queryset=Resources.objects.filter(user=request.user.username), ...)(request)
)

或者通过继承视图来访问请求:

class MyListView(ListView):
    def dispatch(self, request, *args, **kwargs):
        self.queryset = Resources.objects.filter(user = request.user.username)
        return super(MyListView, self).dispatch(request, *args, **kwargs)