【问题标题】:Reverse for 'edit_post' with arguments '('',)' not found. 1 pattern(s) tried: ['(?P<slug>[^/]+)/edit_post$']未找到带有参数 '('',)' 的 'edit_post' 的反向操作。尝试了 1 种模式:['(?P<slug>[^/]+)/edit_post$']
【发布时间】:2021-03-26 06:33:50
【问题描述】:

我正在阅读 Django 教程,并在尝试打开 post_detail 视图(我在其中放置 edit_post 的链接)以在我的博客应用程序中编辑帖子时遇到此错误。我使用 Django==3.1.2。

urls.py

path('<id>/edit_post', views.edit_post, name='edit_post'),

models.py

class Post(models.Model):
    post_title = models.CharField(max_length=500,default='')

导致第 5 行错误的模板 - post_detail_view.html。错误消息突出显示 {% url 'edit_post' posts.id %}

post_detail_view.html

<br>
<a>{{ post.post_title }}</a>
<br>

 <a href="{% url 'mains:edit_post' post.id %}">Edit</a>

问题

当我在浏览器中打开 post_detail.html 页面时,我收到此错误:- 未找到参数 '('',)' 的 'edit_post' 反向。尝试了 1 种模式:['(?P[^/]+)/edit_post$']。 当我从 post_detail 页面删除 edit_post 链接时工作正常,但是当我将 edit_post 的链接放入 post_detail 并打开它时,此错误正在引发。 我被这个问题困住了,不知道出了什么问题。

我尝试了什么。

1)。我更改了编辑按钮的链接。

2)。我已经替换了不同的视图,但我再次更改了它。而且它没有用。

在这方面帮助我。我将非常感谢您的帮助。提前谢谢你!!

【问题讨论】:

  • 尝试更改为 post.slug 你有你的 post.post_title,但在编辑 url {} 你使用了 posts.slug
  • 你的意思是我应该使用 :- post.post_title 而不是 post.slug
  • 不,我的意思是你有错字,应该是 post.slug 而不是 posts.slug
  • 谢谢你,但我已经改了,同样的错误正在引发。
  • 那么你很可能有空蛞蝓。您是否检查了您的管理员以查看 slug 字段是否不为空?

标签: django django-models django-views django-forms django-templates


【解决方案1】:

问题出在我的 post_detail.html 中。

我应该使用 data.id,而不是 post.id。 因为我的 post_detail.html 中的所有对象都与 data.id 相关联。

<a href="{% url 'mains:edit_post' data.id %}">Edit</a>

【讨论】:

    猜你喜欢
    • 2018-11-21
    • 1970-01-01
    • 2021-12-20
    • 2020-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    相关资源
    最近更新 更多