Django - запрос доступа в форме - PullRequest
6 голосов
/ 03 марта 2010

Я вызываю форму следующим образом, затем передаю ее шаблону:

f = UserProfileConfig(request)

Мне нужно иметь доступ к request.session в форме ... поэтому сначала я попробовал это:

class UserProfileConfig(forms.Form):

    def __init__(self,request,*args,**kwargs):
        super (UserProfileConfig,self).__init__(*args,**kwargs)
        self.tester = request.session['some_var']

    username = forms.CharField(label='Username',max_length=100,initial=self.tester)

Это не сработало, насколько я понимаю, из-за того, что форма построена по сравнению с настройкой имени пользователя charfield

Итак, затем я попробовал это:

class UserProfileConfig(forms.Form):

def __init__(self,request,*args,**kwargs):
    super (UserProfileConfig,self).__init__(*args,**kwargs)
    self.a_try = forms.CharField(label='Username',max_length=100,initial=request.session['some_var'])


username = self.a_try

Безрезультатно.

Есть еще идеи?

Ответы [ 2 ]

10 голосов
/ 03 марта 2010

Попробуйте это:

class UserProfileConfig(forms.Form):

    def __init__(self,request,*args,**kwargs):
        super (UserProfileConfig,self).__init__(*args,**kwargs)
        self.fields['username'] = forms.CharField(label='Username',max_length=100,initial=request.session['some_var'])

Я нахожу эту статью о динамических формах очень полезной.

1 голос
/ 24 июля 2016

Я так удивлен, что Django использовать сессию в форме так сложно.иногда нам действительно нужно использовать данные сеанса в форме для допустимых полей.

Я создаю небольшой проект, который может решить эту проблему. django-account-helper

пример кода:

from account_helper.middleware import get_current_session

Class YourForm(forms.Form):

    def clean(self):
        session = get_current_session()
        if self.cleaned_data.get('foo') == session.get('foo'):
            # do something
            pass

        #... your code
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...