8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在Django中处理一个页面上的多个表单的正确方法

picobit 2月前

197 0

我有一个模板页面需要两个表单。如果我只使用一个表单,那么一切正常,如以下典型示例所示:if request.method == 'POST': form = AuthorForm(request.POST,) if form.is_va...

我有一个模板页面需要两个表单。如果我只使用一个表单,那么一切就都正常了,如以下典型示例所示:

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')
帖子版权声明 1、本帖标题:在Django中处理一个页面上的多个表单的正确方法
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由picobit在本站《forms》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 这些前缀是个好主意,我们现在就用它们,它们效果很好。但我们仍然必须插入一个隐藏字段来检测提交了哪个表单,因为两个表单都在灯箱中(每个都在单独的灯箱中)。因为我们需要重新打开正确的灯箱,所以我们需要确切知道提交了哪个表单,然后如果第一个表单有任何验证错误,第二个表单将自动获胜,第一个表单将被重置,尽管我们仍然需要显示第一个表单中的错误。只是觉得你应该知道

返回
作者最近主题: