【问题标题】:How to add initial default value in Django's EmailField()如何在 Django 的 EmailField() 中添加初始默认值
【发布时间】:2016-01-03 02:51:08
【问题描述】:

我有以下 django 方案:

forms.py

from django import forms

class ContactForm(forms.Form):
    name_param        = forms.CharField()
    email_param       = forms.EmailField()
    message_param     = forms.CharField(widget=forms.Textarea)
    recaptcha_param   = ReCaptchaField()

我的问题是:

我想实现类似this 的东西。 我们还想在默认值上启用直接覆盖。

【问题讨论】:

  • 这些是不同的东西。 “overwrite-as-we-type”有一个占位符,但这不是默认值;如果您不输入任何内容,则数据将不会随表单一起提交。
  • @DanielRoseman:placeholder 是什么意思?
  • 我不明白这个问题。

标签: html django forms email


【解决方案1】:

您可以在 email_param 字段中添加占位符属性。所以你的 forms.py 将是:

from django import forms

class ContactForm(forms.Form):
    name_param        = forms.CharField()
    email_param       = forms.EmailField(widget=forms.EmailInput({'placeholder': 'test@example.com'}))
    message_param     = forms.CharField(widget=forms.Textarea)
    recaptcha_param   = ReCaptchaField()

【讨论】:

  • 因为它是一个电子邮件字段,所以最好使用EmailInput 而不是TextInput 作为小部件。
【解决方案2】:

这只是 HTML

<input type="email" placeholder="This is used to contact you..." name="email"/>

【讨论】:

  • 最好在表单中设置占位符,就像在 Oli 的回答中一样,而不是在模板中手动渲染电子邮件字段。
  • 我同意,我只是指出它只是一个 HTML 属性。
【解决方案3】:

请注意

forms.EmailField()

不将小部件作为参数。

你可以这样做的方式可能是

models.EmailField(max_length=255,default='you default value or example@email.com')

这比 html 解决方案更强大,因为它为您提供了在数据库上管理它的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2019-10-26
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多