फ्लास्क में URL पर पुनर्निर्देशित करना


226

मैं पायथन और फ्लास्क के लिए नया हूं और मैं Response.redirectC # के बराबर करने की कोशिश कर रहा हूं - यानी: एक विशिष्ट URL पर रीडायरेक्ट करता हूं - मैं इस बारे में कैसे जाऊं?

यहाँ मेरा कोड है:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello World!'

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

जवाबों:


364

आपको पुनर्निर्देशित करना होगा:

import os
from flask import Flask,redirect

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect("http://www.example.com", code=302)

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

फ्लास्क डॉक्स पर प्रलेखन देखें कोड के लिए डिफ़ॉल्ट मान 302 है, इसलिए code=302इसे छोड़ा जा सकता है या अन्य पुनर्निर्देशित कोड (301, 302, 303, 305 और 307 में से एक) द्वारा प्रतिस्थापित किया जा सकता है।


95
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os
from flask import Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect(url_for('foo'))

@app.route('/foo')
def foo():
    return 'Hello Foo!'

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

पर एक नजर डालें दस्तावेज में उदाहरण


2
ध्यान दें कि आप फ़ंक्शन का नाम पास कर रहे हैं, url_forफिर एक URL बनाता है जिसे पुनर्निर्देशित किया जाता है और आप उसे वापस करते हैं।
Sunvic

40

से बोतल API दस्तावेज़ (v 0.10।):

फ्लास्क। रीडायरेक्ट ( location, code=302, Response=None)

एक प्रतिक्रिया वस्तु (एक WSGI अनुप्रयोग) लौटाता है, जिसे अगर कहा जाता है, तो ग्राहक को लक्ष्य स्थान पर पुनर्निर्देशित करता है। समर्थित कोड 301, 302, 303, 305 और 307 हैं। 300 समर्थित नहीं है क्योंकि यह एक वास्तविक रीडायरेक्ट और 304 नहीं है क्योंकि यह परिभाषित इफ-मॉडिफाइड-हेडडर्स के साथ एक अनुरोध के लिए जवाब है।

संस्करण 0.6 में नया : स्थान अब एक यूनिकोड स्ट्रिंग हो सकता है जो iri_to_uri () फ़ंक्शन का उपयोग करके एन्कोड किया गया है।

पैरामीटर:

  • location - उस स्थान को प्रतिक्रिया को पुनर्निर्देशित करना चाहिए।
  • code- रीडायरेक्ट स्थिति कोड। 302 में चूक।
  • Response(वर्ग) - प्रतिक्रिया का संकेत देते समय उपयोग करने के लिए एक प्रतिक्रिया वर्ग। यदि डिफ़ॉल्ट अनिर्दिष्ट है, तो डिफ़ॉल्ट werkzeug.wrappers.Response है।

13

मेरा मानना ​​है कि यह प्रश्न एक अद्यतन का हकदार है: बस अन्य दृष्टिकोणों पर एक नज़र डालें और तुलना करें।

यहाँ है कि आप फ्लास्क (0.12.2) में एक url से दूसरे में पुनर्निर्देशन (3xx) कैसे करते हैं।

#!/usr/bin/env python

from flask import Flask, redirect

app = Flask(__name__)

@app.route("/")
def index():
    return redirect('/you_were_redirected')

@app.route("/you_were_redirected")
def redirected():
    return "You were redirected. Congrats :)!"

if __name__ == "__main__":
    app.run(host="0.0.0.0",port=8000,debug=True)

अन्य आधिकारिक संदर्भों के लिए, यहां



5

फ्लास्क में redirectकिसी भी यूआरएल को पुनर्निर्देशित करने का कार्य शामिल है । Futhermore, आप एक त्रुटि कोड के साथ एक अनुरोध को जल्दी से समाप्त कर सकते हैं abort:

from flask import abort, Flask, redirect, url_for

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect(url_for('hello'))

@app.route('/hello'):
def world:
    abort(401)

डिफ़ॉल्ट रूप से एक ब्लैक एंड व्हाइट एरर पेज को प्रत्येक एरर कोड के लिए दिखाया जाता है।

redirectविधि डिफ़ॉल्ट रूप से लेता है http स्थिति कोड के लिए कोड 302 एक सूची यहाँ


1

इसके लिए आप केवल उस redirectफ़ंक्शन का उपयोग कर सकते हैं जो इसमें शामिल हैflask

from flask import Flask, redirect

app = Flask(__name__)

@app.route('/')
def hello():
    return redirect("www.exampleURL.com", code = 302)

if __name__ == "__main__":
    app.run()

एक अन्य उपयोगी टिप (जैसा कि आप फ्लास्क में नए हैं), app.debug = Trueफ्लास्क ऑब्जेक्ट को इनिशियलाइज़ करने के बाद जोड़ना है क्योंकि डीबगर आउटपुट क्या गलत है, यह पता लगाने में बहुत मदद करता है।


1

आप इस तरह का उपयोग कर सकते हैं:

import os
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
     # Redirect from here, replace your custom site url "www.google.com"
    return redirect("www.google.com", code=200)

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

यहाँ इस कोड की संदर्भित लिंक दी गई है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.