【发布时间】:2023-01-25 15:16:55
【问题描述】:
我对 Django 相当陌生,无法解决这个问题,
错误: /blog/ 上的 NoReverseMatch
Reverse for 'single' with keyword arguments '{'pid': ''}' not found. 1 pattern(s) tried: \['blog/(?P\<pid\>\[0-9\]+)\\Z'\]
网址.py:
from django.urls import path
from blog.views import \*
from django.conf.urls.static import static
app_name='博客'
urlpatterns = \[
path('',home,name='home'),
path('\<int:pid\>',single, name='single'),
\]
视图.py:
from django.shortcuts import render
from blog.models import Post
import datetime
def single(request,pid):
single_post= Post.objects.filter(pk=pid)
def counting_single_views(n):
n.counted_views += 1
n.save()
counting_single_views(single_post)
context = {'single_post':single_post}
return render(request,'blog/blog-single.html',context)
定义主页(请求):
now = datetime.datetime.now()
posts= Post.objects.filter(published_date__lte= now)
context={'posts':posts}
return render(request,'blog/blog-home.html',context)
博客主页.html :
{% for post in posts %}
\<a href="{% url 'blog:single' pid=post.pk %}"\>\<h3\>{{post.title}}\</h3\>\</a\>
\<p class="excert"\>
{{post.content}}
\</p\>
{% endfor %}
我尝试使用 id 而不是 pk ,但没有什么不同,
【问题讨论】:
-
检查您的
post.pk是否为空。如果您在 URL 中传递一个空值,它将显示错误。 -
你能发布整个堆栈跟踪吗?该错误表明它缺少链接中的
pid参数。但是在你的blog-home.html中,一切看起来都很棒。也许你有另一个网址,例如<a href="{% url 'blog:single' %}">Another URL</a> -
post.pk 不为空且帖子包含,上下文 {'posts': <QuerySet [<Post: test title 1 - 1>, <Post: test from admin - 3>]>},我想加载 'blog:家”,然后是“博客:单身”,但无法加载。
-
如何在这里分享堆栈跟踪,它太长了
-
应该是 path('<int:pid>/',single... 处理 <> 外的斜杠位置。根据错误消息(至少其中之一),post.pk 为空
标签: django rendering reverse url-parameters templatetags