【问题标题】:NoReverseMatch at /posts/ Error in Django projectNoReverseMatch at /posts/ Django 项目中的错误
【发布时间】:2018-02-05 16:14:47
【问题描述】:

我写简单的 Django 博客,django.VERSION - (2, 0, 1, 'final', 0)
但我收到一个错误,不明白如何修复它。

NoReverseMatch at /posts/
Reverse for 'detail' with keyword arguments '{'id': 16}' not found. 1 
pattern(s) tried: ['posts\\/(?P<id>\\d)/$']

还有

Error during template rendering
In template 

djangoblog/posts/templates/posts/base.html, error at line 0

Reverse for 'detail' with keyword arguments '{'id': 16}' not found. 1 
pattern(s) tried: ['posts\\/(?P<id>\\d)/$']
1   {% load staticfiles %}
2   <!DOCTYPE html>
3   <html lang="en">
4   <head>
5       <meta charset="UTF-8">
6       <title>{% block head_title %}
7           Django-blog! {% endblock head_title %}</title>
8       <link rel="stylesheet"
9             

models.py

from django.db import models
from django.urls import reverse

class Post(models.Model):
    title = models.CharField(max_length=200)
    image = models.FileField(null=True, blank=True)
    content = models.TextField()
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, 
auto_now_add=True)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse("posts:detail", kwargs={"id": self.id})

    class Meta:
        ordering = ['-timestamp', '-updated']

views.py 中我的 def 看起来像

def post_list(request):
    queryset_list = Post.objects.all()
    paginator = Paginator(queryset_list, 5)

    page = request.GET.get('page')
    queryset = paginator.get_page(page)
    context = {
        'object_list': queryset,
        'title': 'List'
    }
    return render(request, 'posts/post_list.html', context)

在 urls.py 中的 urlpatterns 看起来像

urlpatterns = [
    re_path('^$', post_list, name='list'),
    re_path('^create/$', post_create),
    re_path(r'^(?P<id>\d)/$', post_detail, name='detail'),
    re_path(r'^(?P<id>\d)/edit/$', post_update, name='update'),
    re_path(r'^(?P<id>\d)/delete/$', post_delete),
]

非常感谢。 如果您需要其他信息 - 请告诉我。

【问题讨论】:

  • 其余的网址在哪里?尤其是细节部分,这显然是有问题的部分。
  • 添加网址如path('posts/&lt;int:section&gt;/', views.detail, name='detail')
  • 我更新了帖子。
  • 成功了,谢谢@Anjaneyulu Batta。

标签: python django


【解决方案1】:

Django 正在寻找您尚未创建的名为 'detail' 的 url,因此会引发错误。

您需要创建一个类似post_detail 的视图并将其包含在名称为detail 的网址中,例如

re_path('posts/(?P<id>\d+)/$', post_detail, name='detail')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2017-12-29
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-06-01
    • 2017-08-19
    相关资源
    最近更新 更多