【发布时间】:2014-01-22 14:31:34
【问题描述】:
我对 CBV 还很陌生,我正在努力理解它。我从 django 文档页面复制了以下示例:
https://docs.djangoproject.com/en/dev/topics/class-based-views/generic-editing/
models.py
from django.core.urlresolvers import reverse
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=200)
def get_absolute_url(self):
return reverse('author-detail', kwargs={'pk': self.pk})
views.py
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from myapp.models import Author
class AuthorCreate(CreateView):
model = Author
fields = ['name']
class AuthorUpdate(UpdateView):
model = Author
fields = ['name']
class AuthorDelete(DeleteView):
model = Author
success_url = reverse_lazy('author-list')
urls.py
from django.conf.urls import patterns, url
from myapp.views import AuthorCreate, AuthorUpdate, AuthorDelete
urlpatterns = patterns('',
# ...
url(r'author/add/$', AuthorCreate.as_view(), name='author_add'),
url(r'author/(?P<pk>\d+)/$', AuthorUpdate.as_view(), name='author_update'),
url(r'author/(?P<pk>\d+)/delete/$', AuthorDelete.as_view(), name='author_delete'),
)
在作者/添加/我确实得到了表单,但是当我输入字符串时,我得到以下错误:
Reverse for 'author-detail' with arguments '()' and keyword arguments '{'pk': 3}' not found.
似乎新条目已添加到数据库中,但无法解析下一个视图的 URL?
所以我很困惑,这个 get_absolute_url() 对象的方法应该做什么,它是如何工作的(我无法从 django 文档中掌握它)以及如何解决这个问题? 谢谢。
编辑1:添加模板:
author_form.html:
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create" />
</form>
【问题讨论】:
-
您的所有网址都没有名称
author-detail。提交表单后是否出现此错误? -
是的,这正是我运行的代码和提交后收到的错误消息。
标签: django django-models django-views django-urls django-class-based-views