2010-09-24 11 views
6

के साथ एक पुराने यूआरएल को एक नए यूआरएल को रीडायरेक्ट करना मैं फ्लास्क माइक्रो-फ्रेमवर्क (वर्कज़ुग पर आधारित) का उपयोग करके वर्तमान की जगह बदलने के लिए एक नई वेबसाइट बना रहा हूं जो पायथन (2.6 मेरे मामले में) का उपयोग करता है।फ्लास्क माइक्रो-फ्रेमवर्क

मूल कार्यक्षमता और कई पृष्ठ समान हैं। हालांकि फ्लास्क का उपयोग करके पिछले कई यूआरएल पुराने लोगों के लिए अलग हैं।

मुझे किसी भी तरह के पुराने यूआरएल और नए यूआरएल को स्टोर करने का कोई तरीका चाहिए, ताकि यदि कोई उपयोगकर्ता पुराने यूआरएल में टाइप करता है तो उन्हें बस नए यूआरएल में भेज दिया जाता है और सबकुछ उनके लिए ठीक काम करता है।



क्या किसी को पता है कि यह फ्लास्क में संभव है या नहीं?

:-)

उत्तर

17

कुछ इस तरह मिलना चाहिए आप आरंभ आपकी मदद के लिए अग्रिम धन्यवाद:

from flask import Flask, redirect, request 

app = Flask(__name__) 

redirect_urls = { 
    'http://example.com/old/': 'http://example.com/new/', 
    ... 
} 

def redirect_url(): 
    return redirect(redirect_urls[request.url], 301) 

for url in redirect_urls: 
    app.add_url_rule(url, url, redirect_url) 
4

एक और तरीका है कि आप यह कर सकते हैं पुराने URL के लिए हैंडलर बदलने के लिए है बस स्पष्ट रूप से पुनर्निर्देशित करें।

from flask import Flask, redirect, url_for 

app = Flask(__name__) 

@app.route('/new') 
def new_hotness(): 
    return 'Sizzle!' 

@app.route('/old') 
def old_busted(): 
    return redirect(url_for('new_hotness')) 

आप पहले से ही पुराने URL के लिए कोई हैंडलर है, तो आपको बस इतना करना सबसे आसान काम हो सकता है है ऊपर, यानी सिर्फ के साथ शरीर की जगह:

return redirect(url_for('new_hotness')) 

Radomir का जवाब बेहतर हो सकता है खासकर अगर आपके पास बहुत पुरानी नई यूआरएल मैपिंग है, हालांकि।

+0

नोट, अगर आप एंकर पर रीडायरेक्ट कर रहे हैं, तो आप इसे 'new_hotness' पर नहीं ले सकते हैं। आपको निर्दिष्ट करने के लिए '_anchor' नामक एक और पैरामीटर का उपयोग करना होगा। https://stackoverflow.com/questions/21583594/flask-redirect-url-with-anchor – phyatt