我一直在构建一个三明治店应用程序,我成功构建了 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 ) 在中处理并可用QueryDict
request.GET
views.py
您可以像这样定义它,?
使用REGEX
模式(您也可以根据需要进行更改)
path('sandwich/(?P<product_id>[\w.-]+)/', ProductView.as_view()),
在你的views.py
你可以过滤它们
product_id = request.GET.get('product_id', None)
URL
既然不能给出 404 错误,这现在应该有希望返回一个响应。
看这个例子
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()),
]
添加回答
举报
0/150
提交
取消