Django forms widgets Textarea直接设置为类型hidden但需要可见

Django forms widgets Textarea is directly set to type hidden but need it visible

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

型号:

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",而我希望它可见,但我没有在小部件中指定必须隐藏它。

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

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

这是 Django 的 CSRF token,您已正确地将其包含在表单中,并且应始终为 <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>