我不明白为什么我得到4040错误,而我似乎已经正确地解决了一切。 Ticket
模型类具有保存在数据库中的实例,因此也存在从1到5的pk
。 html
模板是最简单的,只是为了弄清楚为什么django无法获取并呈现所请求的实例。请注意,我可以看到admin
页面中的实例以及添加新票证等其他路径正常工作。任何帮助表示赞赏:
我想要获得的路径/页面:
http://127.0.0.1:8000/ticket/1/
app:urls.py
from . import views
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'ticket/<int:pk>/', views.ticket_detail, name='ticket_detail'),
]
project:urls.py
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'', include('mmrapp.urls')),
]
views.朋友
def ticket_detail(request, pk):
ticket=get_object_or_404(Ticket,pk=pk)
return render(request,'mmrapp/ticket_detail.html',{'ticket':ticket})
HTML
{% extends 'mmrapp/__l_single_column.html' %}
{% load static %}
{% block main_col %}
<div class="ticket">
<h2>Ticket: {{ticket.pk}}</h2>
</div>
{% endblock main_col %}
据我所知,<int:pk>
语法只能通过path
函数(Django 2.0中的introduced),而不是url
,所以你应该使用path
函数或拒绝使用这种语法并切换到旧的正则表达式:
url(r'ticket/(?P<pk>\d+)/', views.ticket_detail, name='ticket_detail')
此外,您需要在视图中将pk
参数转换为int
,因为使用正则表达式捕获的所有参数都是字符串。