【问题标题】:How to get more than one query from user in Django如何在 Django 中从用户那里获取多个查询
【发布时间】:2019-04-29 00:46:11
【问题描述】:

我想从用户那里获取两个查询项(在本例中为两个州 Id)并显示两者的相关值(在本例中为州 1 和 2 的城市) 我创建了这个视图:

 def get(self,request,State_id1,State_id2):
    cities = city.objects.filter(state__in= [State_id1,State_id2])

但它似乎有一些问题。我该如何解决这个问题?

【问题讨论】:

    标签: django


    【解决方案1】:

    你最好把它们放在一个 URL 参数中,我确定你不想拥有像 http://example.org/california/arizona/new-york/...../texas/washington/ 这样的东西。 http://example.org/?states=california,new-york,texas,washington 的东西会更有意义。在这种情况下,您不必这样做。

    def get(self,request,State_id1,State_id2):
        cities = city.objects.filter(state__in= [State_id1,State_id2])
    

    你可以,在这种情况下我继承了APIView,我不知道你是如何实现的。

    class ClassViewName(APIView):
        def get(self,request):
            states = [state for state in self.request.query_params.get('state').split(',')]
            cities = city.objects.filter(state__in= states)
    

    在您的应用网址格式中

    urlpatterns = [
        path('add-state/', views.ClassViewName.as_view())
    ]
    

    假设这个 urls.py 文件在某个名为“test”的应用程序中,并且在我们的主 urls.py 文件中

    urlpatterns = [
        path('api/test', include('test.urls'))
    ] 
    

    如果我要点击这个端点,我会点击http://example.com/api/test/add-state/?states=california,texas

    【讨论】:

    • 好吧,让我看看我是否做对了,通过以下代码:cities = city.objects.filter(state__in= request.GET.getlist('states')) ,各州将填写所有用户问的问题?现在,我该如何为它定义路径?
    • 你可以定义任何路径,例如path('add-state/', views.ClassViewName.as_view()) 然后如果你要包含选项,你有类似 http://.../add-state/?states=california,德克萨斯州,华盛顿
    • 好吧其实我没有得到这个路径,在相关路径中用户应该输入一个选定状态列表和 api 显示相关城市
    • 好的。如果更清楚,让我更新我的答案
    • 我终于找到答案了,你的请求应该是这样的:http://.../add-state/?states=california&states=texas&states=washington
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    • 2011-11-14
    • 2022-10-06
    • 2013-11-23
    • 2021-05-24
    • 2019-03-13
    • 1970-01-01
    相关资源
    最近更新 更多