Django:有没有可能在模板中使用大写的方法,比如capfirst,而不是在www.example.com中forms.py

vcirk6k6  于 2022-12-14  发布在  Go
关注(0)|答案(1)|浏览(98)

在模板中,{{field.value|capfirst}}等常用语句将字符串的首字母大写。

<input type="text" name="{{field.name}}" value="{{field.value|capfirst}}">

在我的模板中,我没有显式定义输入字段,而是使用了以下内容:

{% for field in form %}
  {{ field }}
{% endfor %}

如果我使用{{field|capfirst}},它将无法工作。正如您可能猜到的,我的所有字段都以forms.py给出,例如:

class MyForm(forms.ModelForm):
    name = forms.CharField()
    description = forms.CharField()

    class Meta:
        model = Project
        fields = ('name', 'description')

如何在forms.py中定义capfirst(或者views.pytemplatetags)?我想在我的模板中保留一个简单的for循环,如上所示。正如你所看到的,我只想大写field.value的第一个字母以在屏幕上显示它,而不需要将此信息传输到数据库(不需要更新),我只是想在屏幕上显示它...可能吗?

qzwqbdag

qzwqbdag1#

要在表单提交后将首字母大写,可以在表单中使用clean_ method修改值,然后再将其呈现在表单上,如下所示:

class MyForm(forms.ModelForm):
    name = forms.CharField()
    description = forms.CharField()

    class Meta:
        model = Project
        fields = ('name', 'description')

    def clean_name(self):
        return self.cleaned_data['name'].capitalize()

capitalize()是一个python函数,它将字符串的第一个字母大写
www.example.com的目的forms.py是为你呈现表单元素,你可以在Django表单呈现器中添加属性,添加类,修改值.如果你想修改表单输入的HTML,那么不要使用forms.py,写一个普通的HTML表单,用request.post.get()接收它.

相关问题