开发者

How to access HttpRequest from urls.py in Django

Basically I want to use a generic view that lists objects based on a username. Now, the question is, how do I do something like:

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

I开发者_运维技巧 couldn't find a way to access the HttpRequest (request) object though... Or do I need to use my own views and do all object selection there?


You could try subclassing the generic view:

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

Then your urls entry would look like:

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

More information on dynamic filtering in class based views can be found here: http://docs.djangoproject.com/en/dev/topics/class-based-views/#dynamic-filtering


If you really want to clutter your URLconf directly, you can do it like so:

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

Or access the request by subclassing the view:

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)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜