【问题标题】:can solve this error ? ( NoReverseMatch )可以解决这个错误吗? (无反向匹配)
【发布时间】: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 中,一切看起来都很棒。也许你有另一个网址,例如&lt;a href="{% url 'blog:single' %}"&gt;Another URL&lt;/a&gt;
  • 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


【解决方案1】:

在你的网址文件中

path('<int:pid>',single, name='single'),

替换为

path('<int:pid>',single, name='single'),

还要注意 [#Manoj Kamble] 点也可能发生

【讨论】:

    猜你喜欢
    • 2021-11-23
    • 2020-07-13
    • 2016-07-09
    • 1970-01-01
    • 2021-04-01
    • 2019-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多