我的项目中的网址有问题。 我是编程新手,正在通过官方网站上的Django教程学习Django。在本教程的第4部分中,有一部分显示了如何使用通用视图。 我检查了我的代码几次,似乎一切都与教程中的完全一样。 但是,当我单击detail.html的链接(在索引页面上)时,出现请求URL的404错误:http://127.0.0.1:8000/1// 我不知道我怎么得到这个请求的URL(以第二个正斜杠结尾)。 我究竟做错了什么? 当我使用返回的函数(即render(request,“ polls / detail.html”,context)
)时,一切正常以下是调试错误说明: “使用mysite.urls中定义的URLconf,Django依次尝试了以下URL模式:
[name='index']
<int:pk>/ [name='detail']
<int:pk>/results/ [name='results']
<int:question_id>/vote/ [name='vote']
admin/
当前路径1 //与任何这些都不匹配。”
下面是我的index.html,project / urls.py,app / urls.py和app / views.py的代码
project / urls.py:
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('', include('polls.urls')),
path('admin/', admin.site.urls),
]
app / urls.py:
urlpatterns = [
path('', views.IndexView.as_view(), name="index"),
path('<int:pk>/', views.DetailView.as_view(), name="detail"),
path('<int:pk>/results/', views.ResultsView.as_view(), name="results"),
path('<int:question_id>/vote/', views.vote, name="vote"),
]
app / views.py
from django.views import generic
from .models import Choice, Question
class IndexView(generic.ListView):
template_name = 'polls/index.html'
context_object_name = "latest_question_list"
def get_queryset(self):
"""Return the last five published questions."""
return Question.objects.order_by("-pub_date")[:5]
class DetailView(generic.DetailView):
model = Question
template_name = 'polls/detail.html'
class ResultsView(generic.DetailView):
model = Question
template_name = 'polls/results.html'
index.html正文:
{% if latest_question_list %}
<ul>
{% for question in latest_question_list %}
<li><a href="{% url 'polls:detail' question.id %}/">
{{ question.question_text }}</a>
</li>
{% endfor %}
</ul>
{% else %}
<p>No polls are available.</p>
{% endif %}