ফ্লাস্কে ইউআরএলে পুনর্নির্দেশ করা হচ্ছে


226

আমি পাইথন এবং ফ্লাস্কে নতুন এবং আমি Response.redirectসি # এর সমতুল্য করার চেষ্টা করছি - যেমন: একটি নির্দিষ্ট ইউআরএলটিতে পুনর্নির্দেশ - আমি কীভাবে এটি করব?

আমার কোডটি এখানে:

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যা এরপরে একটি ইউআরএল তৈরি করে যা পুনর্নির্দেশের জন্য পাস করা হয় এবং আপনি এটি ফিরিয়ে দেন।
সানভিক

40

থেকে বোতল API ডকুমেন্টেশন (উ 0.10।):

ফ্লাস্ক. পুনর্নির্দেশ ( location, code=302, Response=None)

একটি প্রতিক্রিয়া অবজেক্ট (একটি ডাব্লুএসজিআই অ্যাপ্লিকেশন) প্রদান করে, যদি তাকে বলা হয়, ক্লায়েন্টকে লক্ষ্য স্থানে পুনর্নির্দেশ করে। সমর্থিত কোডগুলি 301, 302, 303, 305 এবং 307. 300 সমর্থিত নয় কারণ এটি আসল পুনঃনির্দেশ নয় এবং 304 কারণ এটি সংশোধিত-সংশোধিত-যেহেতু শিরোনামগুলির সাথে অনুরোধের সাথে একটি অনুরোধের উত্তর।

সংস্করণ ০..6 এ নতুন : অবস্থানটি এখন ইউনিকোড স্ট্রিং হতে পারে যা iri_to_uri () ফাংশনটি ব্যবহার করে এনকোড করা থাকে।

পরামিতি:

  • location - প্রতিক্রিয়াটি পুনঃনির্দেশ করা উচিত এমন অবস্থান।
  • code- পুনঃনির্দেশ স্থিতি কোড। 302 এ ডিফল্ট।
  • Response(বর্গ) - প্রতিক্রিয়া তাত্ক্ষণিকভাবে ব্যবহার করার সময় একটি প্রতিক্রিয়া শ্রেণি। ডিফল্টটি হ'ল ওয়ার্কজেগ.ওয়ারাপার্স un অনির্দিষ্ট করা থাকলে উত্তর দিন।

13

আমি বিশ্বাস করি যে এই প্রশ্নটি একটি আপডেটের যোগ্য: কেবলমাত্র অন্যান্য পদ্ধতির দিকে একবার নজর দিন এবং তুলনা করুন।

এখানে আপনি ফ্লাস্কে (০.০২.২) এক ইউআরএল থেকে অন্য 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কোনও ইউআরএলকে পুনর্নির্দেশের জন্য ফাংশন অন্তর্ভুক্ত রয়েছে । ফিউটারমোর, আপনি এর মাধ্যমে একটি ত্রুটি কোডের সাথে প্রাথমিকভাবে একটি অনুরোধ বাতিল করতে পারেন 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)

এখানে এই কোডের রেফারেন্স লিঙ্ক।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.