Django - 在现有视图和URL上使用CreateView表单

-1 投票
1 回答
1146 浏览
提问于 2025-04-30 21:57

我在我的项目中使用了Django的通用视图来实现增删改查功能。CreateView这个类需要用到以下的链接才能正常工作:

urls.py

url(r'^create', BookCreate.as_view(model=Books, template_name='Myproj/book_create.html'),                         name='book_create'),

当我访问 www.mywebsite.com/create 时,表单就会按照我想要的样子显示出来。

我的问题是,我想把这个表单放到另一个已经有链接、视图和模板的页面上。这个页面的链接大致是这样的:

urls.py

url(r'^author/(?P<id>[0-9]{1,})/$', author_view_handler, name='author_view'),

我该怎么解决这个问题呢?

暂无标签

1 个回答

0

CreateView 是一个用来创建表单的工具,它使用了 ModelForm。如果你也想用这个工具,你需要自己创建一个书籍模型表单,像这样:

from django.forms import ModelForm

class BookModelForm(ModelForm):
    pass

然后你需要实例化这个表单,也就是用 form=BookModelForm() 这行代码来创建一个表单对象,并把它传递给你的 author_view_handler 视图的上下文中。

不过我其实不太明白你为什么想要这么做……

更新:要把表单传递给你的视图,可以使用:

from django.shortcuts import render

def author_view_handler(request):
    form = BookModelForm()
    return render(request, 'author_view_handler.html', {"form": form},

上面的代码只是把表单传递给 author_view_handler 视图,并且不包含任何处理表单的代码。

撰写回答