通用视图请求处理 Django

Generic views request handling Django

我是 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

查看 documentation 基于 class 的视图,如果这是您想要使用的。

您可以将 getpost methods 添加到您的 class,它们将在每个相应的请求上触发。

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

首先,返回相同的 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 文档非常好且全面,至少对于 public 功能而言。 请注意示例中的 url(r'^books/([\w-]+)/$', PublisherBookList.as_view()),,其中 ([\w-]+) RegEx 组捕获了一些参数(例如 "smith"),稍后您可以在 get_queryset 方法中使用这些参数(如 self.args[0] 在例子中)。

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