通用视图请求处理Django

时间:2017-04-20 21:01:04

标签: python django post get django-generic-views

我在Django中相对较新。我想使用这样的通用视图:

class photogalleryView(generic.ListView):
    template_name = 'xxx/photogallery.html'
    model = Foto
    query = Foto.objects.all()

def get_queryset(self):
    return self.query

我决定不知道如何处理GET或POST请求或像PHP中的$ _SESSION之类的东西,请你给我一些建议吗? 非常感谢你们!

例如

- 我想在这个URL上处理GET请求:

http://127.0.0.1:8000/photogallery?filter=smth

2 个答案:

答案 0 :(得分:0)

如果您想要使用的话,请查看documentation基于类的视图。

您可以将getpost methods添加到您的班级,它们会触发每个相应的请求。

这些方法采用request参数,可用于从客户端,会话和登录用户访问数据。查看文档了解详细信息。

答案 1 :(得分:0)

首先,返回相同的QuerySet对象query = Foto.objects.all()并没有多大意义,并且当您尝试使用过滤器和分页时可以(并且会)让您遇到麻烦。如果您想手动修改QuerySet,请执行以下操作:

def get_queryset(self, *args, **kwargs):
    qs = super().get_queryset(*args, **kwargs)
    # modify the qs QuerySet in the way you want
    return qs

在Django中,您通常不使用GET或POST。 Django为你处理它:) 您想要实现的示例如下: https://docs.djangoproject.com/en/1.11/topics/class-based-views/generic-display/#dynamic-filtering

事实上,Django文档非常好且全面,至少对于公共功能而言。 请注意示例中的url(r'^books/([\w-]+)/$', PublisherBookList.as_view()),,其中([\w-]+) RegEx组捕获一些参数(例如“smith”),您可以在get_queryset方法中使用该参数(self.args[0]在示例中)。

要了解有关网址格式的更多信息,请阅读以下文档: https://docs.djangoproject.com/en/1.10/topics/http/urls/#named-groups