How to access HttpRequest from urls.py in Django

▼魔方 西西 提交于 2019-12-18 13:30:47

问题


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?


回答1:


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)



回答2:


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



来源:https://stackoverflow.com/questions/4838480/how-to-access-httprequest-from-urls-py-in-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!