试图弄清楚如何使用 Postman 上的查询参数(url.py 和 views.py)获得正确的产品

我一直在构建一个三明治店应用程序,我成功构建了 models.py 并插入了所有产品数据。但是,当我尝试使用 Postman 和 Django 服务器调用特定产品时,它一直显示 404。我在 Postman 上输入的内容是这样的:http: //10.58.1.157 :8000/product/sandwich?product_id=1


下面是我的 urls.py 和 views.py 代码


到目前为止,我已经尝试过:urls.py


from django.urls import path

from .views import ProductView


urlpatterns = [

    path('sandwich/int:<product_id>/', ProductView.as_view()),

]

和:urls.py


path('sandwich/(?P<product_id>[\w.-]+)/', ProductView.as_view())

views.py


import json

import bcrypt

import jwt


from django.views               import View

from django.shortcuts           import render

from django.http                import HttpResponse, JsonResponse

from django.db.models           import Q


from .models                    import Product, Category, SubCategory


class ProductView(View):

    def get(self, request):


        product_id = request.GET.get('product_id', None)


        return JsonResponse({'product_name':Product.objects.get(id=product_id).values()})

为了阐明GET请求,我将在下面添加Postman的屏幕截图: 邮递员截图


素胚勾勒不出你
浏览 91回答 2
2回答

摇曳的蔷薇

这似乎是由于URL路径格式错误造成的。这通常表示404-NotFound错误。您需要添加实质上构成querystring的问号。它作为类似字典的对象 (a&nbsp;) 在中处理并可用QueryDictrequest.GETviews.py您可以像这样定义它,?使用REGEX模式(您也可以根据需要进行更改)path('sandwich/(?P<product_id>[\w.-]+)/',&nbsp;ProductView.as_view()),在你的views.py你可以过滤它们product_id&nbsp;=&nbsp;request.GET.get('product_id',&nbsp;None)URL既然不能给出 404 错误,这现在应该有希望返回一个响应。看这个例子

MM们

我终于解决了这个问题!我查看了此页面并相应地进行了改进...... https://docs.djangoproject.com/en/3.0/topics/http/urls/#nested-arguments请求的最终版本是:http: //127.0.0.1 :8000/product/?product_id=1urls.py 是:from django.urls&nbsp; &nbsp; &nbsp; &nbsp; import path, re_pathfrom .views&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;import ProductViewurlpatterns = [&nbsp; &nbsp; re_path(r'^(?:\?product_id=(?P<product_id>\d+)/)?$', ProductView.as_view()),]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python