通用视图请求处理

2024-10-03 06:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚到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中的$\u会话之类的东西,您能给我一些建议吗? 非常感谢你们!你知道吗

例如-我想处理此URL上的GET请求:

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

Tags: djangonameself视图gethtmltemplatequery
2条回答

如果您想使用基于类的视图,请查看documentationfor class-based view。你知道吗

您可以将getpostmethods添加到类中,它们将在每个请求时触发。你知道吗

这些方法采用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文档非常好而且全面,至少对于公共特性来说是这样。 请注意示例中的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

相关问题 更多 >