【问题标题】:Django forms widgets Textarea is directly set to type hidden but need it visibleDjango表单小部件Textarea直接设置为隐藏类型但需要它可见
【发布时间】:2026-01-17 16:10:02
【问题描述】:

我的问题是我从模型中设置了一个表单来更改该模型的“描述”字段的值:

型号:

class Profile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    birth_date = models.DateField(null=True, blank=True)
    profile_img = models.ForeignKey(Image,on_delete=models.CASCADE,related_name='images',null=True)
    description = models.TextField()

表格:

class ChangeUserDescription(ModelForm):
    class Meta:
        model = Profile
        fields = ['description']
        widgets = {
            'description': forms.Textarea()
        }
        labels = {
            'description':'Description'
        }

模板:

<form method="post">
    {% csrf_token %}
    {{ form }}
    <button type="submit">Save changes</button>
</form>

但在这段代码的结果中,我得到了这个:

<input type="hidden" name="csrfmiddlewaretoken" value="brsd4oO0qhMw2K8PyCIgSgEMqy7QFvEjTHaR6wTJmyWffJaCX5XyOMDLrGldZ3ji">
<button type="submit">Save changes</button>

问题是我在输入中得到 : type="hidden" 而我希望它可见并且我没有在小部件中指定它必须隐藏。

【问题讨论】:

    标签: html django forms model


    【解决方案1】:

    您所指的隐藏输入字段如下:

    <input type="hidden" name="csrfmiddlewaretoken" value="brsd4oO0qhMw2K8PyCIgSgEMqy7QFvEjTHaR6wTJmyWffJaCX5XyOMDLrGldZ3ji">
    

    这是 Django 的 CSRF token,您已正确包含在表单中,并且应该始终是 &lt;input type="hidden"

    您没有向我们展示您的模板代码,但只要您正确地将form 变量传递给您的模板,以下代码应该可以工作:

    <form method="post">
      {% csrf_token %}
    
      Please enter your description here: {{ form.description }}
    
      <button>Submit</button>
    
      {% if not form %}
        You have forgot to add the <tt>form</tt> variable to your template!
      {% endif %}
    </form>
    

    【讨论】:

    • 我添加了模板,我尝试了你的代码,但没有任何改变,输入仍然隐藏,我只看到句子:请在此处输入您的描述:在提交按钮之前
    • 您是否将form 变量传递给您的模板?
    • 好吧,其实你说得对,我很抱歉我的问题很简单。非常感谢
    最近更新 更多