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

标签 python django django-class-based-views

我尝试在 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/

相关文章:

python - metropolis hastings 或 MonteCarlo 方法相对于简单网格搜索的优势?

django - 在 AWS Elastic Beanstalk 上部署 Django 应用程序 : Application url shows only "Index of/"

python - TastyPie:如何 POST 到中间 ManyToMany 'through' 资源

python - 使用 django 表单获取请求公开数据

django - 使用基于类的 View 查询多个模型

Python 反射和类型转换

python - Matplotlib 在第一帧后停止动画

django - mark_safe不渲染html

python - Django 中的 Bootstrap3 选项卡

python - 如何独立于使用的数据库/引擎捕获错误 1062 "duplicate entry"?