【问题标题】:Generic views request handling Django通用视图请求处理 Django
【发布时间】:2017-04-20 21:01:03
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    首先,返回相同的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

    【讨论】:

      【解决方案2】:

      查看documentation 以获取基于类的视图,如果这是您想要使用的。

      您可以将get 和post methods 添加到您的班级,它们将在每个相应的请求上触发。

      这些方法采用request 参数,可用于访问来自客户端、会话和登录用户的数据。详情请查看文档。

      【讨论】:

      • 我已经尝试过了,但是这些方法应该返回什么?当我尝试“返回渲染(请求,photogalleryView.as_view(),查询)”时,它给了我一个空白页
      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多