分别用ModelForm和Form显示中文
ModelForm
在model文件中创建一个表,
class UserProfile(models.Model): user = models.OneToOneField(User,unique=True) birth = models.DateField(blank=True,null=True,verbose_name='出生日期') phone = models.CharField(max_length=20,null=True)
在form文件中中使用ModelForm
class UserProfileForm(forms.ModelForm): class Meta: model = UserProfile fields = ('birth','phone')
如果你想在前端显示中文,有2种方式,
1 在model中用verbose_name,然后在html中写上 profile.birth.label_tag
2.直接写上中文<div class="form-group"> <label for="{{ profile.birth.id_for_label }}" class="col-md-5 control-label">{{ profile.birth.label_tag }}</label> # 1 <div class="col-md-6 text-left">{{ profile.birth }}</div> </div> <div class="form-group"> <label for="{{ profile.phone.id_for_label }}" class="col-md-5 control-label">电话号码</label> # 2 <div class="col-md-6 text-left">{{ profile.phone }}</div> </div>
结果就是这样
Form
在form文件中写入
class LoginForm(forms.Form): username = forms.CharField(label='用户名',max_length=20) password = forms.CharField(widget=forms.PasswordInput)
在html文件中写入form.username.label_tag就能显示中文了
<form class="form-horizontal" action="." method="post"> {% csrf_token %} <div class="form-group"> <label for="{{ form.username.id_for_label }}" class="col-md-5 control-label" style="color:red"><span class="glyphicon glyphicon-user"></span>{{ form.username.label_tag }}</label> <div class="col-md-6 text-left">{{ form.username }}</div> </div> <div class="form-group"> <label for="{{ form.password.id_for_label }}" class="col-md-5 control-label" style="color:red"><span class="glyphicon glyphicon-floppy-open"></span>{{ form.password.label_tag }}</label> <div class="col-md-6 text-left">{{ form.password }}</div> </div> <input type="submit" class="btn btn-primary btn-lg" value="登录"/> </form>
ps 附加一种情况:如果你的视图函数不是自己写的而是用内置的,那怎么修改成中文呢?
比如密码重置,发送邮件的时候,源码的email字段写的是英文,修改源码肯定是不好的,那就重写一个PasswordResetForm类。
url.py
from django.contrib.auth import views as auth_views from account.forms import PasswordResetForm urlpatterns = [ url(r'password_reset/$',auth_views.password_reset,{'password_reset_form':PasswordResetForm,'template_name':'account/password_reset_form.html',}), ]
account/forms.py 重写PasswordResetForm类。
from django.contrib.auth import forms as auth_forms class PasswordResetForm(auth_forms.PasswordResetForm): email = forms.EmailField(label="邮箱", max_length=254)
那么你html中写上就能显示中文了
<div class="form-group"> <label class="col-md-5 control-label">{{ form.email.label_tag }}</label> <div class="col-md-6 text-left">{{ form.email }}</div> </div>
如下: