【问题标题】:Reverse for 'detail_view' with keyword arguments '{'pk': 11}' not found - ( Using Slug field )未找到关键字参数“{'pk': 11}”的“detail_view”反向 - (使用 Slug 字段)
【发布时间】:2021-07-11 06:50:25
【问题描述】:

我正在构建一个 BlogApp,但遇到了错误。

我想要做什么:-

我只是将slug 添加到我的模型中,并更新了get_absolute_urlurl

但之后每当我尝试在浏览器中打开页面时,它就会显示

未找到带有关键字参数“{'pk': 11}”的“detail_view”的反向操作。尝试了 1 种模式:['detail_view/(?P[-a-zA-Z0-9_]+)/(?P[0-9]+)$']

models.py

class Post(models.Model):
    post_owner = models.ForeignKey(User,default='',null=True,on_delete = models.CASCADE)
    post_title = models.CharField(max_length=500,default='')
    slug = models.SlugField(null=True)

    def get_absolute_url(self):
        return reverse('detail_view',kwargs={'pk':self.pk,'slug':self.slug})

views.py

def detail_view(request,pk,slug):
    data = get_object_or_404(Post,pk=pk)

urls.py

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

模板.html

<a href="{% url 'detail_view' pk=topic.pk  %}">More</a><br>

我不知道是什么导致了这个错误。

任何帮助将不胜感激,谢谢您

【问题讨论】:

    标签: python django django-urls


    【解决方案1】:

    您还必须在模板url标签slug=topic.slug中提供slug

    <a href="{% url 'detail_view' slug=topic.slug pk=topic.pk  %}">More</a><br>
    

    或使用模型的get_absolute_url 方法:

    <a href="{{ topic.get_absolute_url }}">More</a><br>
    

    【讨论】:

    • 但它显示的是 127.0.0.1:8000/detail_view/None/12 而不是 name of post。你能告诉我为什么吗?
    • @Smith,因为你的 slug 是 None。为您的SlugField 提供默认值。
    • @Smith,你也可以在模型的save()方法中添加slug。
    • 完成,谢谢建议
    猜你喜欢
    • 2018-09-08
    • 2021-07-20
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 2018-11-07
    • 2019-04-21
    • 2013-12-22
    • 2010-12-22
    相关资源
    最近更新 更多