چطور با flask به طور حرفه ای طبق mvc سرور طراحی کنم؟

python

#1

سلام.
اول بگم که، من یه تازه‌کار تو دنیای پایتون به حساب میام!
میخوام یه برنامه ای برای سمت سرور با فریمورک flask بنویسم که طبق معماری mvc طراحی میشه و پوشه های این پروژه چنین ترکیبی دارن:

/project
   model.py
   server.py
   /controller
      /api1
         app1.py
      /api2
         app2.py

و الان میخوام توی app2.py، مدل ها رو (model.py) ایمپورت کنم، پس باید بزنم

import ..model

ولی به نظرم این نوع ایمپورت (دو تا نقطه) برای فراخوانی در پوشه پدربزرگ (!) کار جالبی نیست، پس فعلا اومدم یه main__.py__ در پوشه پدر project نوشتم که میاد server.py رو ایمپورت میکنه و موقع اجرا توی پوشه پدر project میزنم

python .

حالا برای ایمپورت کردن مدل ها داخل app2.py مینویسم که

import project.model

با این روش احساس میکنم کار کمی اصولی تر شده ولی از شخصی پرسیدم که چنین مشکلی دارم گفت باید به جای ایمپورت کردن مدل ها توی app2، برعکس app2 رو توی model ایمپورت کنی!
ولی چون وقتش نشد و دیگه اون فرد رو نمیبینم نفهمیدم چطور!
فق, ط یه کلمه سلسله مراتب توی mvc ازش یادم موند!
حالا سوالم هم رفع مشکل بالاست هم اینه که:
دقیقا این سلسله مراتب ها چجورین و چجوری پیاده میشن؟


#2

ببخشید هی ویرایش شد، یه ذره با ساز و کار نوشتن پست آشنا نبودم اشتباهی منتشر شد و دیگه نشد حذفش کنم!


#3

به clean architecture و domain driven design نگاه کن

اگه میخواهی اصولی باشه هر قسمت مجزا app باید mvc خودشو داشته باشه


#4

سلام.
اولا که MVC نداریم! MVT داریم! همون سبک و روش هست فقط اسمش یه کم فرق داره.

M - Model
V - View
C - Controller

M - Model
V - View
T - Template

شما نمیتونی با دانشی که از MVC زبانهایی مثل PHP داری بیای سراغ MVT پایتون! یه کم فرق داره!
پیشنهاد میکنم داکیومنت flask رو مطالعه کنی. دایکتوریها و فایلهای شما شبیه چیزی که باید باشه نیست و احتمالا به همین خاطر سوالتون رو درست متوجه نشدم.


پ.ن:
اگه وبسایت بزرگی میسازید و میخواید چند قسمت باشه و چند MVT کنار هم داشته باشید، بخش blueprint توی داکیومنت flask میتونه کمکتون کنه.


#5

ممنون.
مقاله ای یا مطلب کاملی در این زمینه هم (به طور کلی) میتونید معرفی کنید؟


#6

داکیومنت خود flask

اونجا برای bigger applications توضیح داده (blueprint)
برای راحتتر شدن deploy هم پیشنهاد میکنم نرم افزارتون رو تبدیل به ماژول کنید که راحت روی سرور نصب بشه:

pip install -e .

#7

#8

خیلی ممنون.


#9

همونطور که MVC ربطی به PHP نداره MVT هم خیلی به پایتون مربوط نمیشه، اینها الگوهای معماری هستند که با هر زبان برنامه نویسی میشه پیادشون کرد. با توجه به شباهت زیادی که این دوتا به هم دارند خیلی زود میشه‌ بینشون سویچ کرد.


#10

پیاده کردن mvc در فلسک کار خیلی ساده ایه که فکر میکنم در لینک زیر به خوبی شرح داده شده