我一直在構建一個三明治店應用程序,我成功構建了 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
提交
取消