Python Django-现有视图和url上的CreateView表单
我在我的项目CRUD中使用django通用视图。CreateView类使用以下url工作: url.pyPython Django-现有视图和url上的CreateView表单,python,django,forms,url,modelform,Python,Django,Forms,Url,Modelform,我在我的项目CRUD中使用django通用视图。CreateView类使用以下url工作: url.py url(r'^create', BookCreate.as_view(model=Books, template_name='Myproj/book_create.html'), name='book_create'), url(r'^author/(?P<id>[0-9]{1,})/$', author_view_handler
url(r'^create', BookCreate.as_view(model=Books, template_name='Myproj/book_create.html'), name='book_create'),
url(r'^author/(?P<id>[0-9]{1,})/$', author_view_handler, name='author_view'),
如果我进入www.mywebsite.com/create,表单就会显示出我想要的样子
我的问题是,我想将表单合并到另一个页面上,该页面已经有url、视图和模板。url与下面的url类似:
url.py
url(r'^create', BookCreate.as_view(model=Books, template_name='Myproj/book_create.html'), name='book_create'),
url(r'^author/(?P<id>[0-9]{1,})/$', author_view_handler, name='author_view'),
url(r'^author/(?P[0-9]{1,})/$,author\u view\u handler,name='author\u view'),
如何解决此问题?该
CreateView
使用ModelForm
。如果您还想使用它,您需要自己创建一个图书模型表单,如下所示:
from django.forms import ModelForm
class BookModelForm(ModelForm):
pass
以上只是将表单传递给author\u view\u handler视图,不包含任何表单处理代码。您对在非通用视图中使用表单有多熟悉?换句话说,您只需要知道如何获取表单类,还是需要知道如何在
author\u view\u handler
视图中处理表单?我知道如何在非泛型视图中处理表单,我的问题从泛型视图开始。CreateView在重定向到模板的/create
url处为我创建表单。我的问题是我想转到作者/id
url并查看那里的表单。似乎表单只需要一个URL。泛型视图使用普通的模型表单
,因此它应该像在显式类中或使用ModelForm\u工厂
为书籍
模型创建一个URL一样简单,然后在作者视图处理程序
中实例化一个空的URL。我可能会从表单中省略跟踪作者和书籍之间关系的任何字段,并将其设置在我的视图中。好的,现在我的问题改变了。我如何在author\u view\u handler
视图中调用BookCreate(CreateView)类,知道我必须将模型(Books)的名称传递给它?我只是在url中传递模型。我需要将其传递给模板吗?您不需要调用create类,而是调用modelform
上的save
方法。如果书籍与作者之间存在多对一关系,则可能使用commit=False
,因此可以设置“作者”字段,然后保存模型。看见至于将其传递到模板,只需将其放在您的上下文中即可。或者OP希望将多个url+视图+模板组合到一个模板中,类似这样的内容我已经在书中使用了一个模型表单。我只是不知道如何将它传递给作者视图\u处理程序视图。我想访问作者/id
url并查看那里的表单。如何将其传递到上下文?