尝试使用 Django url 路由时找不到页面
Page not found when trying to use Django url routing
所以我一直在尝试使用 django 动态 url 路由,但是当我尝试打开 link 时,Django 显示找不到该页面(错误 404)。
这是我的 urls.py:
from django.urls import path
from pages.views import home_view, contact_view
from products.views import (
product_detail_view,
product_create_view,
render_initial_data,
dynamic_lookup_view
)
urlpatterns = [
path('', home_view, name = 'home'),
path('contact/', contact_view, name = 'contact'),
path('product/<int:my_id>', dynamic_lookup_view, name='product'),
path('create/', product_create_view),
path('admin/', admin.site.urls),
]
这是我的views.py(只包括我现在要渲染的主要功能):
from django.shortcuts import render
from .models import Product
#from .forms import ProductForm, RawProductForm
# Create your views here.
def dynamic_lookup_view(request, my_id):
obj = Product.objects.get(id=my_id)
context = {
"object": obj
}
return render(request, "products/product_detail.html", context)
当我尝试打开 /product/
时出现错误。
谁能告诉我我做错了什么?
这是错误:
Request Method: GET
Request URL: http://127.0.0.1:8000/product/
Using the URLconf defined in trydjango.urls, Django tried these URL patterns, in this order:
[name='home']
contact/ [name='contact']
product/<int:my_id> [name='product']
admin/
The current path, product/, didn't match any of these.
你应该像这样使用 pk
而不是 id
:
obj = Product.objects.get(pk=my_id)
或者您可以使用 get_object_or_404
函数。
from django.shortcuts import get_object_or_404
def my_view(request):
obj = get_object_or_404(MyModel, pk=1)
所以我一直在尝试使用 django 动态 url 路由,但是当我尝试打开 link 时,Django 显示找不到该页面(错误 404)。
这是我的 urls.py:
from django.urls import path
from pages.views import home_view, contact_view
from products.views import (
product_detail_view,
product_create_view,
render_initial_data,
dynamic_lookup_view
)
urlpatterns = [
path('', home_view, name = 'home'),
path('contact/', contact_view, name = 'contact'),
path('product/<int:my_id>', dynamic_lookup_view, name='product'),
path('create/', product_create_view),
path('admin/', admin.site.urls),
]
这是我的views.py(只包括我现在要渲染的主要功能):
from django.shortcuts import render
from .models import Product
#from .forms import ProductForm, RawProductForm
# Create your views here.
def dynamic_lookup_view(request, my_id):
obj = Product.objects.get(id=my_id)
context = {
"object": obj
}
return render(request, "products/product_detail.html", context)
当我尝试打开 /product/
时出现错误。
谁能告诉我我做错了什么?
这是错误:
Request Method: GET
Request URL: http://127.0.0.1:8000/product/
Using the URLconf defined in trydjango.urls, Django tried these URL patterns, in this order:
[name='home']
contact/ [name='contact']
product/<int:my_id> [name='product']
admin/
The current path, product/, didn't match any of these.
你应该像这样使用 pk
而不是 id
:
obj = Product.objects.get(pk=my_id)
或者您可以使用 get_object_or_404
函数。
from django.shortcuts import get_object_or_404
def my_view(request):
obj = get_object_or_404(MyModel, pk=1)