反转为"viewpost",未找到参数"(1)"。尝试了 1 种模式:['int:post\\.id$']。为什么我会收到此错误?



我正在尝试学习django,在制作视口视图时,我遇到了这个错误,说Reverse for 'viewpost' with arguments '(1,)' not found. 1 pattern(s) tried: ['int:post\.id$']我不明白我做的错误是什么

Views.py

from django.shortcuts import render
from .models import Post
# Create your views here.
def main(request):
return render(request, "blog/index.html", {"Posts":Post.objects.all()})
def viewpost(request):

return render(request, "blog/viewpost.html")

urls.py

from django.urls import path, include
from . import views

urlpatterns = [
path('',views.main, name = 'main'),
path('viewpost/int:pk/', views.viewpost, name = 'viewpost')

]

index.html

{% extends 'blog/layout.html' %}
{% block body %}
<h1>Physics Blog</h1>

{% for post in Posts %}
<fieldset>
<a href = "{% url 'viewpost' post.id %}"><h2>{{ post.Title }}</h2></a>
<a href = "{% url 'viewpost' post.id %}"><h4>{{ post.Description }}</h4></a>
<a href = "{% url 'viewpost' post.id %}"><h6>{{ post.Author }}</h6></a>   
</fieldset>   
<br>
{% endfor %}

{% endblock %}

viewpost.html

{% extends 'blog/layout.html' %}
{% block body %}
<h1>{{ post.Title }}</h1>
<h1>{{ post.Description }}</h1>
<h1>{{ post.Author }}</h1>

{% endblock %}

问题是这一行:

path('viewpost/int:pk/', views.viewpost, name = 'viewpost')

int:pk缺少角括号。将其更改为

path('viewpost/<int:pk>/', views.viewpost, name='viewpost')

您问题中的path()似乎与错误消息中的'int:post\.id$不匹配。因此,请确保已保存文件并重新启动runserver

您还必须更改viewpost,使其接受pk.

def viewpost(request, pk):

最新更新