Django textarea表单

2024-09-25 08:25:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在Django的HTML页面中为textarea设置行和列,但它不起作用

我已经把行和列放在我的表格里了

Views.py

class EditForm(forms.Form):

    title =  forms.CharField(widget=forms.TextInput(attrs={'name':'title'}))

    body = forms.CharField(widget=forms.Textarea(attrs={'name':'body', 'rows':3, 'cols':5}))

def new(request):
     return render(request,"encyclopedia/handlepage.html", {
       "title": "CREATE NEW PAGE",
        "edit": False,
        "editpage": EditForm()
     })
 

handlepage.html

{% extends "encyclopedia/layout.html" %}

{% block title %}
   {{ title }}
{% endblock %}

{% block body %}

<h1>{{title}}</h1>
<a href="https://guides.github.com/features/mastering-markdown/">Markdown guides</a>
{% if edit %}
    //Useless right now
{% else %}

<form method="POST" action="{% url 'save' %}">
    <input type="submit" value="SAVE ENTRY"><br>
    {% csrf_token %}
    {{ editpage }} 
</form>


{% endif %}
  
{% endblock %}

然后我的页面应该有一个小的文本区域,但它的大小与行和列无关,如下所示 handlepage.html


Tags: nametitlerequesthtmlbodyforms页面widget
2条回答

把这些数字写在引号里。看看它是否有效

body = forms.CharField(widget=forms.Textarea(attrs={'name':'body', 'rows':'3', 'cols':'5'}))

在init中添加它有效吗?我忘了为什么我必须这样做,但这是我一直在使用的(我可能已经过时了)

class EditForm(forms.Form):

    body = forms.CharField(widget=forms.Textarea())
    
    def __init__(self, *args, *kwargs):
        super().__init__(*args, *kwargs)
        self.fields['body'].widget.attrs['rows'] = 3

或者,在meta中:

class EditForm(forms.Form):

    # your fields defined here followed by Meta

    class Meta:
        fields = ['title', 'body' ]
        widgets = {
            'body': forms.Textarea(attrs={'rows': 3}),
        }

相关问题 更多 >