【问题标题】:Django form doesn't get processed [closed]Django表单没有得到处理[关闭]
【发布时间】:2012-06-28 21:47:58
【问题描述】:

当我单击按钮并且表单有效时,它只会刷新页面。我检查了 POST 数据,它是正确的。可能是什么问题?

我有一个具有相同设置的不同联系表单,它可以工作。

forms.py 文件:

class ContactFormDebate(forms.Form):

subject = forms.CharField(max_length=100)
debate_title = forms.CharField(max_length=100)
debate_description = forms.CharField()
debate_scope = forms.CharField(max_length=200)
sender = forms.EmailField()
cc_myself = forms.BooleanField(required=False)

views.py:

def contactDebate(request):
if request.method == 'POST': # If the form has been submitted...
    form = ContactFormDebate(request.POST) # A form bound to the POST data
    if form.is_valid():
        subject = form.cleaned_data['subject']
        debate_title = form.cleaed_data['debate_title']
        debate_description = form.cleaned.data['debate_description']
        sender = form.cleaned_data['sender']
        cc_myself = form.cleaned_data['cc_myself']

        recipients = ['someemail@email.com']
        if cc_myself:
            recipients.append(sender)

        from django.core.mail import send_mail
        message = debate_title.append(debate_descripton)
        send_mail(subject, message, sender, recipients)
        return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
    form = ContactFormDebate() # An unbound form

return render(request, 'newdebate.html', {
    'form': form,
})

模板:

<h2 class="page-heading"><span>ПОДНЕСИ НОВА ДЕБАТА</span></h2>
<form action="." method="post">{% csrf_token %}
{{ form.non_field_errors }}
<div class="fieldWrapper">
    {{ form.subject.errors }}
    <label for="id_subject">Наслов на пораката:</label>
    {{ form.subject }}
</div>
<div class="fieldWrapper">
    {{ form.debate_title.errors }}
    <label for="id_debate_title">Наслов на дебатата:</label>
    {{ form.debate_title }}
</div>
<div class="fieldWrapper">
    {{ form.debate_description.errors }}
    <label for="id_debate_description">Опис на дебатата:</label>
    {{ form.debate_description }}
</div>
<div class="fieldWrapper">
    {{ form.sender.errors }}
    <label for="id_sender">Email адреса:</label>
    {{ form.sender }}
</div>
<div class="fieldWrapper">
    {{ form.cc_myself.errors }}
    {{ form.cc_myself }}
    <label for="id_cc_myself" id="myself">Сакам да ми пристигне копија од пораката</label>
</div>
<p>
<div style="clear: both;"></div>
<input type="submit" value="Испрати" class="btn1 btn-primary1" /></p>

【问题讨论】:

  • 它是否返回一个 empty 表单,没有您输入的值?
  • 不,我输入的值在那里。

标签: django forms post contact


【解决方案1】:

您的 HTML 中缺少debate_scope 的字段。

此外,您的大小写错误:cleaed_datacleaned.data

【讨论】:

  • 谢谢,无法相信这个解决方案是一个错字。
【解决方案2】:

如果表单无效,则没有 else 条件;你应该补充一点。其次,你应该确保你的电子邮件设置是正确的,否则你会得到一个例外。

def contactDebate(request):
    if request.method == 'POST': # If the form has been submitted...
        form = ContactFormDebate(request.POST) # A form bound to the POST data
        if form.is_valid():
            subject = form.cleaned_data['subject']
            debate_title = form.cleaed_data['debate_title']
            debate_description = form.cleaned.data['debate_description']
            sender = form.cleaned_data['sender']
            cc_myself = form.cleaned_data['cc_myself']

            recipients = ['someemail@email.com']
            if cc_myself:
                recipients.append(sender)

            from django.core.mail import send_mail
            message = debate_title.append(debate_descripton)
            send_mail(subject, message, sender, recipients, fail_silenty=True)
            return HttpResponseRedirect('/thanks/') # Redirect after POST
         else:
            return render(request,'newdebate.html',{'form':form})
    else:
         form = ContactFormDebate() # An unbound form

    return render(request, 'newdebate.html', {'form': form})

【讨论】:

  • 我的邮箱设置是正确的,我成功发送了其他表单的邮件。我添加了您建议的代码,但仍然发生同样的事情。
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 2016-11-13
  • 2015-07-04
  • 2013-02-17
相关资源
最近更新 更多