2014-11-18 9 views
5

में अगले यूआरएल पर रीडायरेक्ट करें मैं Django 1.7Python 3.4 के साथ उपयोग कर रहा हूं। मेरे पास एक परिदृश्य है जहां मैं उपयोगकर्ताओं को लॉग इन करने के बाद next GET पैरामीटर में परिभाषित अनुसार किसी अन्य दृश्य पर रीडायरेक्ट करना चाहता हूं। लेकिन मेरे वर्तमान सेटअप के साथ, वे हमेशा होम पेज पर रीडायरेक्ट हो जाते हैं। मैं उम्मीद कर रहा था कि FormView कक्षा के get_success_url में ऐसा करने का कोई तरीका है।django FormView

नीचे मेरी कोड है

यूआरएल

http://localhost:8000/login/?next=/ads/new 

views.py

from django.views.generic.edit import FormView 

class LoginView(FormView): 

    template_name = 'users/login.html' 
    form_class = LoginForm 

    def get_success_url(self):       
     return reverse('home') 

    def form_valid(self, form): 
     form.user.backend = 'django.contrib.auth.backends.ModelBackend' 
     login(self.request, form.user) 
     messages.info(self.request, 'Login successful') 
     return super(LoginView, self).form_valid(form) 

urls.py

url(r'^login/', LoginView.as_view(), name='login'), 
url(r'^new$', 'apps.adverts.views.add_new_advert', name='new_advert'), # URL to use after login, in next param 
में अगले पैरामीटर

उपर्युक्त सेटअप के साथ, होम पेज के अलावा, यदि इसे परिभाषित किया गया है, तो मैं अगले यूआरएल पर रीडायरेक्ट कैसे करूं?

+0

[ड्वैंगो सफलता यूआरएल का उपयोग कर डब्लूएजी सफलता यूआरएल] (http://stackoverflow.com/questions/26897050/django-success-url-using-kwargs) – rnevius

+0

मैंने ऊपर वर्णित लिंक को देखा है, और इसके दौरान किसी अन्य ऑब्जेक्ट/व्यू पर रीडायरेक्ट करने के साथ सौदे करता है, यह दिखाता है कि 'get_success_url' विधि' में 'GET' पैरामीटर कैसे प्राप्त करें' अगले 'यूआरएल में पास करने के लिए। – Frankline

उत्तर

7

अपनी सफलता url में डेटा पैरामीटर के रूप में डेटा शामिल करें।

def get_success_url(self): 
    # find your next url here 
    next_url = self.request.POST.get('next',None) # here method should be GET or POST. 
    if next_url: 
     return "%s" % (next_url) # you can include some query strings as well 
    else : 
     return reverse('home') # what url you wish to return 

आशा है कि यह आपके लिए काम करेगा।

+0

यह मेरे लिए काम नहीं किया। सुनिश्चित नहीं है कि मेरा कोड क्या गुम है। – Frankline

+2

क्या आपने देखा कि आप स्वयं को self.request.POST में प्राप्त कर रहे हैं। क्योंकि यह मेरे लिए काम कर रहा है। आपको जांच करनी चाहिए कि आपका अगला परम पोस्ट या जीईटी पर आ रहा है। –

+0

self.request.GET ('अगला', कोई नहीं) आज़माएं। – tzipp