作者left (881 forever)
看板Python
標題[問題] Django form的問題
時間Mon Aug 21 10:55:23 2017
小的在trace前人遺留下來的程式碼
看到Django forms.py的地方
程式碼如下
我有一個地方不解的是下面這一行code
mail = forms.EmailField(label=_("Email"))
我的問題是label=_("Email")
這裏不是只要用label="Email"就好了
前人為啥要寫成label=_("Email")?
然後我一般的python shell try一下label=_("Email")
得到如下的結果
>>> label=_("Email")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name '_' is not defined
label=_("Email")到底在Django的form裡面是表示啥啊?
class ResetPasswordForm(forms.Form):
mail = forms.EmailField(label=_("Email"))
def clean_mail(self):
mail = self.cleaned_data['mail']
if mail:
try:
user = User.objects.get(email=mail)
except User.DoesNotExist:
raise forms.ValidationError("此電子信箱不存在")
return self.cleaned_data['mail']
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.20.56.157
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1503284127.A.B08.html
→ petitbleu: 這看起來是 gettext, i18n 用 08/21 11:13
→ djshen: 看import 08/21 11:19
推 billy0131: 未看先猜 from django.utils.translation \ 08/21 12:41
→ billy0131: import ugettext_lazy as _ 08/21 12:41
推 frank910138: I18n 08/21 12:47
→ left: 應該是大家所說的,不過這要怎麼使用啊?有範例嗎? 08/21 14:19
→ left: 如果我用的是中文 那麼 'Email'會變成'信箱'的意思嗎? 08/21 14:20
→ Falldog: 基本上就是GNU gettext的用法 只是Django有包裝一下 08/21 22:29