Python 如何在类形式的初始化函数中读取会话语言
在Django项目中,我动态创建ContactsForm类的字段:Python 如何在类形式的初始化函数中读取会话语言,python,django,Python,Django,在Django项目中,我动态创建ContactsForm类的字段: class ContactsForm(forms.Form): def __init__(self, *args, **kwargs): super(ContactsForm, self).__init__(*args, **kwargs) self.fields['nome'].widget.attrs.update({ 'class' : 'form-control',
class ContactsForm(forms.Form):
def __init__(self, *args, **kwargs):
super(ContactsForm, self).__init__(*args, **kwargs)
self.fields['nome'].widget.attrs.update({
'class' : 'form-control',
'placeholder': 'your name *',
'type': 'text'
})
[..]
在模板中:
[..]
#set language
<a href="/language/it">ITA</a> - <a href="/language/en">ENG</a>
{% if session_language == 'it' %}
[..]
{% else %}
[..]
{% endif %}
<form id="contactForm" name="sentMessage" method='POST' action=''>{% csrf_token %}
[..]
<div class="form-group" >
{{ form.nome }}
</div>
[..]
</form>
谢谢你能提供的任何帮助
编辑:
当我发布这个问题时,我意识到我可以根据session\u language
的值让模板使用不同的ContactForm。在views.py中,我可以读取request.session['lang']
,并根据lang值实例化一个不同的表单
在视图中.py
if request.session[`lang`] == 'it':
form = ContactsForm()
else:
form = ContactsForm_eng()
还有更优雅的方法吗?按照
您可以尝试:
class ContactsForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(ContactsForm, self).__init__(*args, **kwargs)
self.lang = None
if self.request:
self.lang = self.request.session.get('lang')
in view.py
form = ContactsForm(request=self.request)
遵循
您可以尝试:
class ContactsForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(ContactsForm, self).__init__(*args, **kwargs)
self.lang = None
if self.request:
self.lang = self.request.session.get('lang')
in view.py
form = ContactsForm(request=self.request)