Url_for () দিয়ে ফ্লাস্কে গতিশীল URL গুলি তৈরি করুন


180

আমার অর্ধেক ফ্লাস্কের রুটের একটি পরিবর্তনশীল বলার দরকার আছে, /<variable>/addবা /<variable>/remove। আমি কীভাবে এই অবস্থানগুলিতে লিঙ্ক তৈরি করব?

url_for() ফাংশনটির পথে যাওয়ার জন্য একটি যুক্তি লাগে তবে আমি যুক্তিগুলি যুক্ত করতে পারি না?

উত্তর:


277

এটি ভেরিয়েবলগুলির জন্য কীওয়ার্ড আর্গুমেন্ট গ্রহণ করে:

url_for('add', variable=foo)

12
মানে যে ফাংশন def add(variable)?
এন্ডোলিথ

5
@endolith, হ্যাঁ ** পাস করা কাওয়ারগুলি ফ্লাস্কে url_forচলক নিয়মের রুটের ফাংশন প্যারামিটার হিসাবে পাস করবে
হাইভোল্ট

3
তবে সমস্যাটি হ'ল পাই কীভাবে এটি পাইথন থেকে পরিবর্তনশীল হলে 'foo' সুযোগের বাইরে। তাহলে, আপনি কীভাবে এটি সমাধান করবেন?

1
কেবল এটি পরিষ্কার হয়ে যায়, যদি আপনার @app.route("/<a>/<b>")এবং def function(a,b): ...এর কাজ হিসাবে থাকে তবে আপনার url_forএর কীওয়ার্ড আর্গুমেন্টগুলি ব্যবহার এবং নির্দিষ্ট করা উচিত :url_for('function', a='somevalue', b='anothervalue')
জ্যারেটিও

116

url_forফ্ল্যাশ ইন একটি অ্যাপ্লিকেশন জুড়ে (টেমপ্লেট সহ) ইউআরএল পরিবর্তন করার ওভারহেড প্রতিরোধ করার জন্য একটি URL তৈরি করার জন্য ব্যবহৃত হয় creating ছাড়া url_forযদি আপনার অ্যাপের মূল URL টিতে কোনও পরিবর্তন হয় তবে আপনাকে লিঙ্কটি উপস্থিত প্রতিটি পৃষ্ঠায় এটি পরিবর্তন করতে হবে।

বাক্য গঠন: url_for('name of the function of the route','parameters (if required)')

এটি হিসাবে ব্যবহার করা যেতে পারে:

@app.route('/index')
@app.route('/')
def index():
    return 'you are in the index page'

এখন আপনার যদি সূচী পৃষ্ঠার লিঙ্ক থাকে: আপনি এটি ব্যবহার করতে পারেন:

<a href={{ url_for('index') }}>Index</a>

আপনি এটি দিয়ে অনেকগুলি স্টাফ করতে পারেন, উদাহরণস্বরূপ:

@app.route('/questions/<int:question_id>'):    #int has been used as a filter that only integer will be passed in the url otherwise it will give a 404 error
def find_question(question_id):  
    return ('you asked for question{0}'.format(question_id))

উপরের জন্য আমরা ব্যবহার করতে পারি:

<a href = {{ url_for('find_question' ,question_id=1) }}>Question 1</a>

এই মত আপনি কেবল পরামিতি পাস করতে পারেন!


1
আমার একটি প্রশ্ন রয়েছে, প্রথম উদাহরণে, সূচি পদ্ধতিটি স্ট্রিং হিসাবে পাস হয়েছিল যখন দ্বিতীয় পদ্ধতিতে, ফাইন্ড_ক্লেশনটি ভেরিয়েবল হিসাবে পাস হচ্ছে। কেন?
आनंद

1
@ আনন্দত্যাগী এটি কি আপনার অর্থ? ইউআরএল রুটিং
টনি চৌ চৌ

3
@ Vari পরিবর্তনশীল যদি আপনি করেন: {{ url_for('find_question' ,question_id=question.id) }}এবং না{{ url_for('find_question' ,question_id={{question.id}}) }}
আবদুর-রাহমান জনহঙ্গীর

38

এর জন্য ফ্লাস্ক এপিআই ডকুমেন্টটি দেখুনflask.url_for()

আপনার টেমপ্লেটে জেএস বা সিএসএসের লিঙ্ক করার জন্য ব্যবহারের অন্যান্য নমুনা স্নিপেটগুলি নীচে রয়েছে।

<script src="{{ url_for('static', filename='jquery.min.js') }}"></script>

<link rel=stylesheet type=text/css href="{{ url_for('static', filename='style.css') }}">

1

টেমপ্লেট:

ফাংশন নাম এবং যুক্তি পাস।

<a href="{{ url_for('get_blog_post',id = blog.id)}}">{{blog.title}}</a>

দেখুন, ফাংশন

@app.route('/blog/post/<string:id>',methods=['GET'])
def get_blog_post(id):
    return id
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.