请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

ListView 如何获取参数

基础的view中可以在get方法中获取url传递的参数,需要向ListView中传递筛选参数应该怎么写呢?

正在回答

3回答

ListView最底层就是继承的View

写法和平时的类视图写法是一样的

from django.views.generic import ListView

# www.xxx.com/user?username="Zero"
class AListView(ListView):
    def get(self, request):
        username = request.GET.get('username')

emmm...不过本来ListView是帮我们用最简单的代码实现了列表展示分页等功能,如果想通过url中的参数来重新定义查询集的话在你的类视图就需要重写def get_queryset()方法,或者直接定义queryset,可以多看几次老师的6-3 LiseView源码详解,然后自己顺着走一下。

class NewsListView(LoginRequiredMixin, ListView):
    """首页动态"""
    template_name = "news/news_list.html"  # '模型类名_list.html'

    def get_queryset(self):
        user = self.request.GET.get('username')
        return Model_Name.objects.filter()




1 回复 有任何疑惑可以回复我~
Jack 2019-05-15 23:34:24

就是@1cho糖糖同学说的,不过是使用 self.request.GET.get('xxx')  每个方法里面都能使用self.request. 这是对于www.xxx.com/user?username=zero传参的方式。

对于www.xxx.com/user/zero/,要获取到zero,

路由urls.py使用

path('user/<str:username>/', views.XXXView.as_view(), name='xxx'),

视图views.py中使用

self.kwargs['username']

1 回复 有任何疑惑可以回复我~
提问者 李嘉图principal 2019-05-15 22:15:20

这样拿到的参数和listview中的其他方法如何关联?如果只是重写get方法还不如直接用基础的view,请指教?

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号