হুবহু ফ্লাস্ক ব্লুপ্রিন্ট কি?


180

আমি করেছি পড়া কর্মকর্তা বোতল ডকুমেন্টেশন খেয়াল উপর এবং এমনকি এক বা দুই তাদের ব্যবহার করে ব্লগ পোস্ট নেই।

এমনকি আমি এগুলি আমার ওয়েব অ্যাপ্লিকেশনেও ব্যবহার করেছি, তবে তারা কী তা বা পুরোপুরি কীভাবে তারা আমার অ্যাপ্লিকেশনটিতে ফিট করে তা আমি পুরোপুরি বুঝতে পারি না। এটি কীভাবে আমার অ্যাপ্লিকেশনটির উদাহরণের সাথে মিল তবে বেশ নয়? ডকুমেন্টেশনটি বিস্তৃত তবে আমার কাছে এটি ছড়িয়ে দেওয়ার জন্য আমি একটি সাধারণ ব্যাখ্যা বা একটি আলোকিত উপমা চাই seek একজন সহকর্মী আমাকে এখানে জিজ্ঞাসা করার জন্য নির্বাচিত হয়ে একটি ফ্লাস্কের নীলনকশাটি ব্যাখ্যা করতে বলেছিলেন, তখন আমি যথেষ্ট হতবাক হয়ে পড়েছিলাম।

উত্তর:


287

একটি ব্লুপ্রিন্ট একটি ওয়েব অ্যাপ্লিকেশনের একটি "বিভাগ" তৈরি করার জন্য একটি টেম্পলেট। আপনি এটি একটি ছাঁচ হিসাবে ভাবতে পারেন:

একটি স্বর্ণের মেডেলিয়ন সহ একটি মেডেলিয়ান ছাঁচ তাজা তা থেকে সরিয়ে দেওয়া হয়েছে

আপনি ব্লুপ্রিন্ট নিতে পারেন এবং এটি আপনার অ্যাপ্লিকেশনটিতে বেশ কয়েকটি জায়গায় প্রয়োগ করতে পারেন। প্রতিবার আপনি এটি প্রয়োগ করুন নীলনকোষটি আপনার প্রয়োগের প্লাস্টারে এর কাঠামোর একটি নতুন সংস্করণ তৈরি করবে।

# An example
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

এটি গাছগুলির সাথে কাজ করার জন্য একটি সহজ ছাঁচ - এটি বলে যে কোনও অ্যাপ্লিকেশন যা গাছের সাথে কাজ করে তার পাতাগুলি, এর শিকড় এবং এর রিংগুলিতে অ্যাক্সেস সরবরাহ করতে হবে (বছর দ্বারা)। নিজেই এটি একটি ফাঁকা শেল it এটি কোনও রুট করতে পারে না, কোনও অ্যাপ্লিকেশনটিতে প্রভাবিত না হওয়া পর্যন্ত এটি প্রতিক্রিয়া করতে পারে না:

from tree_workshop import tree_mold

app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")

একবার এটি তৈরি হয়ে গেলে এটি register_blueprintফাংশনটি ব্যবহার করে অ্যাপ্লিকেশনটিতে "মুগ্ধ" হতে পারে - এটি নির্দিষ্ট করা লোকেশনগুলিতে অ্যাপ্লিকেশনটিতে নীল রঙের ছাঁচটিকে "প্রভাবিত" করে url_prefix


5
ব্লুপ্রিন্টগুলি ব্যবহার করে অ্যাপ্লিকেশন কাঠামোর জন্য একটি সুন্দর নিবন্ধ এখানে। এক্সপ্লোরফ্লাস.কিন
দেবাশীষ

5
আমি এখনও বিভ্রান্ত এর অর্থ কি oak/leavesএবং fir\leavesএকই কোডটিকে টোটাল করবে? এছাড়াও, কি স্ট্রিং এর উদ্দেশ্য moldমধ্যেBlueprint("mold", __name__)
Codevalley

8
হ্যাঁ, উভয়ই oak/leavesএবং এর fir/leavesদ্বারা পরিচালিত হবে def leaves"mold"এটি ব্লুপ্রিন্টের নাম এবং রাস্তাগুলি উল্লেখ করার সময় অসম্পূর্ণতার জন্য ব্যবহৃত হয় (যেমন someBlueprint.routeNameবনাম anotherBlueprint.routeName)।
শান ভিয়েরা

2
আমি কিভাবে ফাংশনটিতে অ্যাক্সেস করতে পারি url_prefix? বলুন, এটি ওক বা ফার আছে কিনা তা পরীক্ষা করতে? tree_mold.url_prefixআমাকে একটি দেয়None
মেলকোর

3
@ মেলকোর - কেবল ব্যবহার করুন url_for('.relative_route_name')(শীর্ষস্থানীয় বিন্দুটি নোট করুন) উদাহরণস্বরূপ, url_for('.roots')মাউন্ট করা প্রতিটি পয়েন্টে স্বয়ংক্রিয়ভাবে একটি সঠিকভাবে স্কোপ করা URL সরবরাহ করবে।
শন ভিয়েরা

6

@ দেবাশীশের একটি মন্তব্যে যেমন উল্লেখ করা হয়েছে , এই নিবন্ধটি একটি ভাল উত্তর প্রদান করেছে:

http://exploreflask.com/en/latest/blueprints.html

নিবন্ধ থেকে উদ্ধৃতি:

এর উদাহরণ হ'ল ফেসবুক। ফেসবুক যদি ফ্লাস্ক ব্যবহার করে তবে এটি স্ট্যাটিক পৃষ্ঠাগুলির (যেমন সাইন-আউট হোম, রেজিস্ট্রেশন, প্রায় ইত্যাদি), ড্যাশবোর্ড (অর্থাত্ নিউজ ফিড), প্রোফাইলগুলি (/ রবার্ট / সম্পর্কে এবং / রবার্ট / ফটো) ব্লুপ্রিন্ট থাকতে পারে, সেটিংস (/ সেটিংস / সুরক্ষা এবং / সেটিংস / গোপনীয়তা) এবং আরও অনেক কিছু। এই উপাদানগুলি সমস্ত একটি সাধারণ বিন্যাস এবং শৈলী ভাগ করে, কিন্তু প্রতিটি নিজস্ব নিজস্ব লেআউট আছে

এটি একটি খুব ভাল ব্যাখ্যা, বিশেষত অংশ "যদি ফেসবুক ফ্লাস্ক ব্যবহার করে"। ব্লুপ্রিন্ট আসলে কীভাবে কাজ করে তা কল্পনা করার জন্য এটি আমাদের একটি দৃ to় পরিস্থিতি দেয়।


3

আমি নিজেও কেবল এটিকে হোঁচট খেয়েছি এবং ডকুমেন্টেশন সূত্রের কয়েকটি পড়ার পরে বিভ্রান্ত হয়ে পড়েছিলাম। প্রথমে আমি ভেবেছিলাম এটি সি # / জাভা বাস্তবায়ন শৈলীর মতো যেখানে আপনি কিছু জিনিস সংজ্ঞায়িত করেন তবে এটি পরবর্তীকালে এটি সংজ্ঞায়িত করার বিষয়ে চিন্তা করতে হবে না। যাইহোক, আমি এই পৃষ্ঠাটিকে হোঁচট খেয়েছি যা এটিকে খুব সাধারণ (এবং বর্তমানের প্রচুর হাসিখুশি ঘটনাগুলির) পদগুলিতে রাখে। https://hackersandslackers.com/flask-blueprints/

মূলত একটি সুবিধা যা লিঙ্কে উল্লেখ করা হয়েছে এবং আমাকে এর বাস্তব বিশ্বের ব্যবহার সম্পর্কে একটি পরিষ্কার ধারণা প্রদান করে তা হ'ল আমি কার্যকরভাবে যুক্তিযুক্তভাবে অ্যাপ্লিকেশনটিকে কয়েকটি অংশে সংগঠিত / বিভক্ত করতে পারি যা কেবলমাত্র তার নিজের বিষয়গুলির সাথে সম্পর্কিত হতে হবে। সুতরাং এটি কিছু নকশা করা এনক্যাপসুলেশন সরবরাহ করে।

সম্পাদনা করুন: আমি বর্তমানে এটি আমার ওয়েব অ্যাপস কোডটি আলাদা করতে ব্যবহার করছি। এটিও বেশ ভাল সিদ্ধান্ত ছিল কারণ আমি পেয়েছি যে সীসা ডিজাইনার Vue.js. এ সীমান্ত তৈরি করতে চান যা আমি এখনও ব্যবহার করি নি তবে এটির প্রকল্পের ফাইলগুলি দেখলে আরও অগোছালো দেখা যাবে এবং সম্ভবত অনেক নামকরণের সংঘর্ষের প্রবণতা সরবরাহ করবে।


0

বড় প্রকল্পগুলির জন্য, আপনার সমস্ত কোড একই ফাইলে থাকা উচিত নয়। পরিবর্তে আপনি বেশিরভাগ কার্যকারিতার উপর ভিত্তি করে বড় কোডগুলিকে আলাদা ফাইলে বিভাগ বা বিভক্ত করতে পারেন। দেয়াল গঠনের ইটের মতো।

আশা করি এটি সাহায্য করেছে। যেহেতু এটি কোনও তাত্ত্বিক প্রশ্ন, কোনও কোড পোস্ট করে না।

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