在Django中一页上处理多种形式的正确方法

发布于 2021-02-02 23:16:10

我有一个模板页面,需要两种形式。如果我仅使用一种形式,则可以像下面的典型示例一样正常:

if request.method == 'POST':
    form = AuthorForm(request.POST,)
    if form.is_valid():
        form.save()
        # do something.
else:
    form = AuthorForm()

但是,如果我想使用多个表单,我如何让视图知道我仅提交一种表单,而不提交另一种表单(即,它仍然是request.POST,但我只想处理提交表单的表单)发生了吗?

这是该解决方案基于这样的答案expectedphrase和bannedphrase是的提交按钮的不同形式和名称expectedphraseform和bannedphraseform是形式。

if request.method == 'POST':
    if 'bannedphrase' in request.POST:
        bannedphraseform = BannedPhraseForm(request.POST, prefix='banned')
        if bannedphraseform.is_valid():
            bannedphraseform.save()
        expectedphraseform = ExpectedPhraseForm(prefix='expected')
    elif 'expectedphrase' in request.POST:
        expectedphraseform = ExpectedPhraseForm(request.POST, prefix='expected')
        if expectedphraseform.is_valid():
            expectedphraseform.save() 
        bannedphraseform = BannedPhraseForm(prefix='banned')
else:
    bannedphraseform = BannedPhraseForm(prefix='banned')
    expectedphraseform = ExpectedPhraseForm(prefix='expected')
关注者
0
被浏览
84
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
    1. 两种形式的操作中放入不同的URL。然后,你将具有两个不同的视图函数来处理两种不同的形式。

    2. 从POST数据中读取提交按钮的值。你可以确定单击了哪个提交按钮:如何构建多个Django提交按钮?



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看