【发布时间】: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/<int:section>/', views.detail, name='detail') -
我更新了帖子。
-
成功了,谢谢@Anjaneyulu Batta。