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'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM