gpt4 book ai didi

python - Django get_initial 基于类的 View 方法不起作用

转载 作者:行者123 更新时间:2023-11-30 23:26:55 26 4
gpt4 key购买 nike

我尝试在 FormView 中使用 get_initial 来预填充“主题”字段以获取“批发商感兴趣”文本,但它不起作用。如果重要的话,我正在使用 Django 1.5、Python 2.7。这是我的代码。我是不是漏掉了一步?

class ContactView(FormView):
"""
ContactForm is a ModelForm
"""
template_name = 'core/contact-us.html'
form_class = ContactForm
success_url = reverse_lazy('products:index')
initial = {'subject': 'I am interested in making a wholesale purchase'}


def get_initial(self):
"""
Returns the initial data to use for forms on this view.
"""
return self.initial

def get_form_kwargs(self):
kwargs = {'initial': self.get_initial()}
return kwargs

def form_valid(self, form):
cd = form.cleaned_data
contact = Contact.objects.create(**form.cleaned_data)
if contact:
print 'contact created'
else:
print 'not created'
if contact is not None:
# send contact email
msg = contact_email(name=cd['name'], email=cd['email'], subject=cd['subject'], message=cd['message'])
msg.send()
# Add success message
msg = 'Your contact email has been successfully sent. We look forward to speaking with you.'
messages.info(self.request, msg)
return super(ContactView, self).form_valid(form)

编辑

我删除了 get_initialget_form_kwargs 但仍然没有运气。如果有帮助的话,这是我的Form的粘贴。我是否需要附加我想要以某种方式放入表单中的内容的首字母?感谢您的帮助!

class ContactForm(forms.ModelForm):

class Meta:
model = Contact
fields = ('name', 'email', 'subject', 'message',)
widgets = {
'message': forms.Textarea(attrs={'cols': 20, 'rows': 20}),
}

最佳答案

不要使用FormView,而是尝试CreateView。它是 FormView 的子类,负责处理您的实际模型。

另外,如何在模板中显示表单?如果您手动浏览所有字段,您可能不会显示初始值。

关于python - Django get_initial 基于类的 View 方法不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22328301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com