Flask-DJ: Django (mvc) структура для проекта на flask
- пятница, 13 марта 2020 г. в 00:27:23
Всем привет!
Когда я впервые столкнулся с Flask, у меня сразу возник вопрос по построению архитектуры проекта.
Прочитав пару статей на Хабре (https://habr.com/ru/post/275099/ и https://habr.com/ru/post/421887/), я вспомнил свой опыт создания проектов на Django, и решил сделать инструмент, благодаря которому не придется задумываться об архитектуре, но при этом можно будет использовать все возможности Flask.
$ pip install Flask-DJ
Создать проект можно либо с помощью консоли (для шаблонов и статических файлов используются флаги -t -st)
$ flask-dj startproject app
Либо можно создать файл setup.py
(для шаблонов и статических файлов используются флаги
need_templates=True, need_static=True).
from Flask_DJ import ProjectConstructor
from os import getcwd
your_project_name = 'app'
project_dir = getcwd()
ProjectConstructor(your_project_name, project_dir).startproject()
В результате должна получится следующая структура
(static и templates появятся при указании соответствующих флагов)
app/
app/
__init__.py
config.py
urls.py
manage.py
Приложением в данном случае называется модуль (элемент приложения).
Для создания необходимо прописать следующую команду (вместо index поставить имя вашего приложения).
$ python manage.py startapp index
После выполнения у проекта будет следующая структура:
app/
app/
__init__.py
config.py
urls.py
index/
forms.py
models.py
urls.py
views.py
manage.py
Все гайды принято начинать с Hello world, мы не будем исключением:
# index/views.py
def index():
return "Hello world"
Создаем относительный путь внутри index:
# index/urls.py
from utils.urls import relative_path
from .views import index
urlpatterns = [
relative_path("", index),
]
Добавляем наше приложение к глобальному пути:
# app/urls.py
from utils.urls import add_relative_path, include
urlpatterns = [
add_relative_path("/", include("index.urls")),
]
$ python manage.py runserver
Если все шаги сделаны верно, то мы увидим следующее
Надеюсь данная статья была для вас полезной.
Если вас заинтересовала данная библиотека, то вот ссылки на нее: