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

发布时间:2019-05-28 22:34:13编辑:auto阅读(1567)

    在处理中文显示的时候,刚开始接触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'

关键字