我正在尝试学习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):