2013-01-11 21 views
8

में वापस रीडायरेक्ट करें मेरे पास आइटम नामक डीबी टेबल है। आइटम एक status विशेषता है, किफ्लास्क

new 
todo 
doing 
done 

के दोनों हो सकता है मेरी वेबसाइट पर मेरे पास मद की टेबल दिखाने वाले दो दृश्य हैं।

  • देखें 1 से पता चलता है सभी आइटम (एक स्थिति कॉलम के साथ)।
  • देखें 2 केवल स्थिति todo के साथ आइटम दिखाता है।

आइटम की स्थिति के आधार पर, उपयोगकर्ता कुछ क्रियाएं कर सकते हैं ("करने के लिए आगे बढ़ें", "करने के लिए आगे बढ़ें", "करने के लिए आगे बढ़ें")।

यदि आप व्यू 1 और व्यू 2 पर विचार करते हैं, तो दोनों में आम बात है कि उनमें todo स्थिति वाले आइटम शामिल हैं। आइटम की स्थिति "कर" पर सेट है - तो दोनों पर मैं एक यूआरएल

/Item/<id>/moveToDoing 

कहा जाता है जहां आईडी पर एक बटन जोड़ने की है।

अब मैं चाहता हूं कि उपयोगकर्ता को उस बटन पर क्लिक किया जाए जहां उसने बटन क्लिक किया था (देखें 1 या देखें 2)।

मेरे प्रश्न हैं:

  1. कैसे बोतल के साथ ऐसा करना? मुझे लगता है कि http://flask.pocoo.org/snippets/62/ मुझे काफी आवश्यकता नहीं है, क्योंकि मेरे पास यहां एक फॉर्मुलर के साथ कोई पोस्ट अनुरोध नहीं है। (मुझे चाहिए?)
  2. क्या मैं इसे सही तरीके से कर रहा हूं या क्या सामान्य रूप से इसे हल करने के बारे में कोई सम्मेलन है?
+1

आपके प्रश्न के लिए नहीं, लेकिन क्यों अपना यूआरएल '/ item//moveto/' – greatghoul

उत्तर

22

मैं सहायक समारोह है जो यहाँ की सिफारिश की है उपयोग कर रहा हूँ: http://flask.pocoo.org/docs/reqcontext/

def redirect_url(default='index'): 
    return request.args.get('next') or \ 
      request.referrer or \ 
      url_for(default) 

दृश्य

def some_view(): 
    # some action 
    return redirect(redirect_url()) 

में उस में का उपयोग करें कोई पैरामीटर के बिना यह उपयोगकर्ता रीडायरेक्ट करेगा वापस जहां के लिए वह (request.referrer) से आया था। यूआरएल निर्दिष्ट करने के लिए आप प्राप्त पैरामीटर next जोड़ सकते हैं। उदाहरण के लिए ओथ के लिए यह उपयोगी है।

instagram.authorize(callback=url_for(".oauth_authorized", 
               next=redirect_url(), 
               _external=True)) 

मैं एक डिफ़ॉल्ट दृश्य भी जोड़ा अगर वहाँ किसी कारण

REDIRECT_URL ('। Another_view')

टुकड़ा आप मूल रूप से जुड़ा हुआ ही लेकिन सुनिश्चित करने के द्वारा और अधिक सुरक्षित करता है के लिए कोई संदर्भ देने वाली होनी चाहिए आप किसी अन्य होस्ट पर किसी दुर्भावनापूर्ण हमलावर के पृष्ठ पर रीडायरेक्ट नहीं हो सकते हैं।

+5

'request.referrer' को एक सरल बैक-बटन/लिंक के लिए आवश्यक है, धन्यवाद! –