Django 模型表单小部件未渲染

问题描述 投票:0回答:1

框架——Django。我正在尝试创建带有输入字段属性的联系表单。我对第一个字段“名称”有疑问。第二到第四个字段在 html 中完美呈现。 这是我的 models.py:

from django.db import models
        class md_contactalpha(models.Model):
            name = models.CharField(max_length=100, verbose_name='Name',null=False,  blank=False  )
            email=models.EmailField(max_length=100,verbose_name='Email',
            unique=True,null=False,blank=False)
            phone = models.CharField( max_length=15, verbose_name='Phone',null=True,blank=True)
            message = models.CharField(max_length=512,verbose_name='Message',   null=True,
            blank=True, )               
            def __str__(self):
                return self.name

这是 forms.py 文件:

from django import forms
from .models import md_contactalpha
class fm_contactalpha(forms.ModelForm):
    class Meta:
        model = md_contactalpha
        fields = ('name', 'email', 'phone', 'message') 
        widgets = {
            'name':forms.TextInput(attrs={'class':'input_text', 'placeholder': 'Full Name'}),
            'email':forms.EmailInput(attrs={'class':'input_text'}),
            'phone':forms.TextInput(attrs={'class':'input_text'}), 
            'message':forms.Textarea(attrs={'class':'message_box','rows':5}),   
            }

这是 html 文件:

<form method="post">
        {% csrf_token %}      
            <form method="POST">
                      {{ form.as_p }}            
               </form>
<button type="submit">Send Message</button>

如前所述,最后 3 个字段工作完美。 “名称”字段不会填充小部件中的任何内容并产生此 -

<input type="" class=  placeholder="Name" name="Name">
                        &lt;django.forms.fields.CharField object at 0x7fb2ea920ce0&gt;

我检查了有关小部件主题的其他帖子,但似乎没有答案为什么一个名为 name 的字段应该有问题。 我将非常感谢任何帮助。谢谢。

django model widget
1个回答
0
投票

看起来内部/外部

<form>
标签未关闭,这会导致这种意外的行为。尝试删除包含第二个
<form method="POST">
标签的行。

<form method="post">
    {% csrf_token %}      
    {{ form.as_p }}            
</form>

请注意:

  1. submit
    按钮必须带有
    <form>
    标签才能执行表单提交。或者,作为替代方案,必须具有属性
    form="yourFormId"
    才能提交特定表单。
  2. 没有
  3. <form>
     属性的 
    action=
    标签将向渲染的相同视图表单发出请求。如果这不是您所期望的 - 则必须使用视图处理表单提交的 url 设置
    action=
    属性。
© www.soinside.com 2019 - 2024. All rights reserved.