【发布时间】:2010-04-28 01:34:32
【问题描述】:
我在 Django 表单中自定义标签时遇到问题
这是文件contact_form.py中的表单代码:
from django import forms
class ContactForm(forms.Form):
def __init__(self, subject_label="Subject", message_label="Message", email_label="Your email", cc_myself_label="Cc myself", *args, **kwargs):
super(ContactForm, self).__init__(*args, **kwargs)
self.fields['subject'].label = subject_label
self.fields['message'].label = message_label
self.fields['email'].label = email_label
self.fields['cc_myself'].label = cc_myself_label
subject = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
message = forms.CharField(widget=forms.Textarea(attrs={'rows':15, 'cols':80}))
email = forms.EmailField(widget=forms.TextInput(attrs={'size':'60'}))
cc_myself = forms.BooleanField(required=False)
我在其中使用的视图如下:
def contact(request, product_id=None):
.
.
.
if request.method == 'POST':
form = contact_form.ContactForm(request.POST)
if form.is_valid():
.
.
else:
form = contact_form.ContactForm(
subject_label = "Subject",
message_label = "Your Message",
email_label = "Your email",
cc_myself_label = "Cc myself")
用于初始化标签的字符串最终将是依赖于语言的字符串,即英语、荷兰语、法语等。
当我测试表单时,不会发送电子邮件,而是表单返回的不是重定向页面:
<QueryDict: {u'cc_myself': [u'on'], u'message': [u'message body'],
u'email':[u'info@umx.com'], u'subject': [u'test message']}>:
主题标签之前的位置。这显然是一个表示表单字段及其内容的字典。
当我将文件contact_form.py更改为:
from django import forms
class ContactForm(forms.Form):
"""
def __init__(self, subject_label="Subject", message_label="Message", email_label="Your email", cc_myself_label="Cc myself", *args, **kwargs):
super(ContactForm, self).__init__(*args, **kwargs)
self.fields['subject'].label = subject_label
self.fields['message'].label = message_label
self.fields['email'].label = email_label
self.fields['cc_myself'].label = cc_myself_label
"""
subject = forms.CharField(widget=forms.TextInput(attrs={'size':'60'}))
message = forms.CharField(widget=forms.Textarea(attrs={'rows':15, 'cols':80}))
email = forms.EmailField(widget=forms.TextInput(attrs={'size':'60'}))
cc_myself = forms.BooleanField(required=False)
即禁用初始化然后一切正常。表单数据通过电子邮件发送,并显示重定向页面。所以很明显,初始化代码是不正确的。但是什么?
非常感谢您的帮助。
【问题讨论】:
标签: django forms internationalization