How to access HttpRequest from urls.py in Django

Basically I want to use a generic view that lists objects based on 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 could not find a way to access the HttpRequest object (request), though ... Or do I need to use my own views and do all the selection of objects there?

+5
source share
2 answers

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

(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)
+3
source

You can try to subclass the general view:

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

Then your url will look like this:

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

: http://docs.djangoproject.com/en/dev/topics/class-based-views/#dynamic-filtering

+4

All Articles