[問題] Django form的問題

看板Python作者 (881 forever)時間8年前 (2017/08/21 10:55), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
小的在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

08/21 11:13, , 1F
這看起來是 gettext, i18n 用
08/21 11:13, 1F

08/21 11:19, , 2F
看import
08/21 11:19, 2F

08/21 12:41, , 3F
未看先猜 from django.utils.translation \
08/21 12:41, 3F

08/21 12:41, , 4F
import ugettext_lazy as _
08/21 12:41, 4F

08/21 12:47, , 5F
I18n
08/21 12:47, 5F

08/21 14:19, , 6F
應該是大家所說的,不過這要怎麼使用啊?有範例嗎?
08/21 14:19, 6F

08/21 14:20, , 7F
如果我用的是中文 那麼 'Email'會變成'信箱'的意思嗎?
08/21 14:20, 7F

08/21 22:28, , 8F
https://goo.gl/yiErCr # Django Doc: Translation
08/21 22:28, 8F

08/21 22:29, , 9F
基本上就是GNU gettext的用法 只是Django有包裝一下
08/21 22:29, 9F
文章代碼(AID): #1PcakVi8 (Python)