Django:表单字段如何在模板中用中文显示

在处理中文显示的时候,刚开始接触django时,很容易弄混表单汉化和Admin后台汉化。

1、表单汉化:是针对用户的。用户浏览网页时,表单的名称如果是英文的,不够友好,所以需要显示为中文,虽然代码编写还是英文。
2、Admin后台汉化:是针对网站管理员的。因为Admin后台是数据库直接注册的,所以要想汉化后台内容,其实是对数据库(如字段名)操作的。2种汉化的对象不一样。

表单汉化:分2种情况

1、普通表单:即继承自forms.Form。这种类型的表单,中文显示主要用label属性来实现。

class ProductForm(forms.Form):
    name = forms.CharField(max_length=20, label="名字",widget=forms.widgets.TextInput(
        attrs={"class":"c1"}),
        error_messages={'required':'名字不能为空'}
       )
    weight = forms.CharField(max_length=50, label='重量', validators=[weight_validate])
    size = forms.CharField(max_length=50, label='尺寸')
    choice_list = [(i+1, v['type_name']) for i,v in enumerate(Type.objects.values('type_name'))]
    type = forms.ChoiceField(widget=forms.widgets.Select(
        attrs={'class':type, 'size':'4'}
    ), choices=choice_list, label='产品类型')

2、数据表单:即继承自forms.ModelForm。这种类型的表单,主要通过class Meta:中的labels实现。

class ProductModeForm(forms.ModelForm):
    productId = forms.CharField(max_length=20, label='产品序号')    #新建字段,用label。

    class Meta:
        model = Product
        fields = '__all__'
        exclude = []

        labels = {                            #实现字段名汉化。
            'name': '产品名称',
            'weight': '重量',
            'size':'尺寸',
            'type': '产品类型',
        }

        widgets = {
            'name':forms.widgets.TextInput(attrs={'class':'c1'}),
        }

        field_classes = {
            'name': forms.CharField
        }

        error_messages = {
            '__all__': {
                'required': '请输入内容',
                'invalid': '请检查输入内容'
            },
            'weight': {
                'required': '请输入重量数值',
                'invalid': '请检查数值是否正确'
            }

        }

    def clean_weight(self):
        data = self.cleaned_data['weight']
        return data+'g'
posted @ 2019-04-19 13:12  张和  阅读(1345)  评论(0编辑  收藏  举报