【发布时间】:2015-06-09 18:19:12
【问题描述】:
当我转到http://127.0.0.1:8000/books/author/ 时出现错误:
NoReverseMatch 在 /books/author/
“/books/author/1/”用参数“()”和关键字反转 未找到参数“{}”。尝试了 0 个模式:[]
我的视图是 ListView,模板代码如下
<ul>
{% for author in object_list %}
<li><a href="{% url author.get_absolute_url %}">{{ author.name }} </a></li>
{% endfor %}
</ul>
当我将模板更改为:
<ul>
{% for author in object_list %}
<li><a href="{% url 'bookstore:author-details' author.pk %}">{{ author.name }} </a></li>
{% endfor %}
</ul>
我的 models.py 包含类 Author 并定义了 get_absolute_url()
class Author(models.Model):
name = models.CharField(max_length=200)
birthday = models.DateField()
photo = models.ImageField(blank=True)
nickname = models.CharField(max_length=200, blank=True)
def get_absolute_url(self):
return reverse('bookstore:author-details', kwargs={'pk': self.pk})
主 urls.py 包含命名空间
urlpatterns = [
url(r'^books/', include('bookstore.urls', namespace='bookstore')),
]
这里是 bookstore.urls
urlpatterns = [
url(r'^author/', include([
url(r'^$', views.AuthorsList.as_view(), name='authors-list'),
url(r'^create/', views.AuthorCreate.as_view(), name='author-create'),
url(r'^(?P<pk>[0-9]+)/', include([
url(r'^$', views.AuthorDetails.as_view(), name='author-details'),
url(r'edit/', views.AuthorEdit.as_view(), name='author-edit'),
url(r'delete/', views.AuthorDelete.as_view(), name='author-delete'),
]))
])),
]
【问题讨论】: