2015-04-23 98 views
0

我正在处理的不是英文语言的项目。我在注册过程中遇到了一些问题。Django - 如何覆盖html中的表单模板标签

在我的注册HTML我有:

... 
<form action="" style="text-align: center" method="POST">{% csrf_token %} 
<ul style = "text-align: left"> 
{{user_form.as_p}} 
</ul> 
<input type="submit" value="Užsiregistruoti" onclick="validateForm()"/> 

</form> 
... 

现在的文字是默认的英文。该{{user_form.as_p}}取值从我forms.py:

... 
fields = ('username', 'password1', 'password2') 
... 

有没有办法离开形式值不变,并改写我自己语言的HTML部分?我怎么做?我不能只是采取生成的HTML部分和翻译它,它不会那样工作。

+0

您的意思是“{{user_form.as_p}}”,您想用自己的语言编写。 –

+1

您需要为此启用Django的'I18N'功能。这是一个广泛的话题,但非常好[记录在这里](https://docs.djangoproject.com/en/1.8/topics/i18n/translation/)。基本设置完成后,您可以将表单上的标签翻译为设置中设置的任何语言。以一种形式,例如如'your_name = forms.CharField(label = _('Your name'),max_length = 100)',或者如果表单来自模型,则通过模型中的'verbose_name'属性。 – sthzg

+0

:)我以某种方式认为你正在开发一个需要支持多种语言的项目(这完全不是你所写的)。如果您的项目需要使用单一语言,那么@shellbye的答案当然更简单更正确。 – sthzg

回答

1

可以在model使用verbose_name这样的:

field = models.CharField(max_length=200, verbose_name="your_language_here") 

更多信息见here

如果您form没有来自“型号, you can use label`,而不是像这样:

field = forms.CharField(label="your_language_here") 

更多信息here