为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

素胚勾勒不出你 2022-12-14 17:34:02
我一直在构建一个三明治店应用程序,我成功构建了 models.py 并插入了所有产品数据。但是,当我尝试使用 Postman 和 Django 服务器调用特定产品时,它一直显示 404。我在 Postman 上输入的内容是这样的:http: //10.58.1.157 :8000/product/sandwich?product_id=1下面是我的 urls.py 和 views.py 代码到目前为止,我已经尝试过:urls.pyfrom django.urls import pathfrom .views import ProductViewurlpatterns = [    path('sandwich/int:<product_id>/', ProductView.as_view()),]和:urls.pypath('sandwich/(?P<product_id>[\w.-]+)/', ProductView.as_view())views.pyimport jsonimport bcryptimport jwtfrom django.views               import Viewfrom django.shortcuts           import renderfrom django.http                import HttpResponse, JsonResponsefrom django.db.models           import Qfrom .models                    import Product, Category, SubCategoryclass 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的屏幕截图: 邮递员截图
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

这似乎是由于URL路径格式错误造成的。这通常表示404-NotFound错误。

您需要添加实质上构成querystring的问号。它作为类似字典的对象 (a ) 在中处理并可用QueryDictrequest.GETviews.py

您可以像这样定义它,?使用REGEX模式(您也可以根据需要进行更改)

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

在你的views.py你可以过滤它们

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

URL既然不能给出 404 错误,这现在应该有希望返回一个响应。

这个例子


查看完整回答
反对 回复 2022-12-14
?
MM们

TA贡献1886条经验 获得超2个赞

我终于解决了这个问题!


我查看了此页面并相应地进行了改进...... https://docs.djangoproject.com/en/3.0/topics/http/urls/#nested-arguments


请求的最终版本是:http: //127.0.0.1 :8000/product/?product_id=1


urls.py 是:


from django.urls        import path, re_path

from .views             import ProductView


urlpatterns = [

    re_path(r'^(?:\?product_id=(?P<product_id>\d+)/)?$', ProductView.as_view()),

]


查看完整回答
反对 回复 2022-12-14
  • 2 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信