2010-03-03 14 views
6

मैं एक रूप बोल रहा हूँ इस प्रकार है, तो एक टेम्पलेट के लिए इसे पारित में प्रवेश request.session:Django - प्रपत्र

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 

:

तो, अगली मैं इस कोशिश की।

कोई अन्य विचार?

उत्तर

9

इस प्रयास करें:

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']) 

मैं इस लेख के बारे में dynamic forms बहुत उपयोगी पाते हैं।

+0

एक आकर्षण की तरह काम किया! बहुत बहुत धन्यवाद। थोड़ी देर के लिए इसे कुश्ती कर रहे थे। – Brant

1

मुझे आश्चर्य है कि 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 
संबंधित मुद्दे