我需要从 views.py 获取请求参数并使用 request.LANGUAGE_CODE 将模型对象翻译成事件语言,因为现在我得到的是默认语言的“字符串”对象,而不是事件语言。我应该如何进行,以便将参数从 init 函数传递到表单小部件?
来自 views.py:
form = ContactForm(lang=request.LANGUAGE_CODE)
表单.py:
from django import forms
from phonenumber_field.formfields import PhoneNumberField
from django.utils.translation import ugettext_lazy as _
from django.utils import translation
from .models import *
strings = Strings.objects.language().get(pk=1)
class ContactForm(forms.Form):
phone = PhoneNumberField(
min_length=9,
max_length=20,
widget=forms.TextInput(attrs={
'id': 'phone-number',
'placeholder': strings.placeholder,
})
)
def __init__(self, *args, **kwargs):
self.lang = kwargs.pop('lang', None)
super(ContactForm, self).__init__(*args, **kwargs)
最佳答案
试试这段代码:
def __init__(self, *args, **kwargs):
self.lang = kwargs.pop('lang', None)
super(ContactForm, self).__init__(*args, **kwargs)
form.fields['phone'].widget.attrs['placeholder'] = strings.placeholder[self.lang]
当然,您应该实现 strings.placeholder[self.lang]
部分(这只是一个示例)以通过语言代码本地化您的字符串。
希望这对您有所帮助。
关于python - 获取请求参数并在forms.py中作为widget参数使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691452/