Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在类形式的初始化函数中读取会话语言_Python_Django - Fatal编程技术网

Python 如何在类形式的初始化函数中读取会话语言

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',

在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',
        '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)