flask design patterns
Овај водич објашњава неке од уобичајених образаца дизајна тиквице и најбоље праксе које треба следити приликом дизајнирања веб апликација са примерима:
Дизајн апликација је суштински аспект развоја софтвера. Непланирани дизајн апликације резултира непремостивим техничким дугом. Стога, кад год желимо да прилагодимо своју апликацију, у реду је испробати временски тестиране узорке дизајна.
Фласк заједница има много таквих примера који вас могу инспирисати и утицати на ваше дизајнерске одлуке када желите да испробате неколико образаца за своју апликацију. Чутура је толико непинионисана и флексибилна да бисте можда желели да комбинујете концепте из постојећих образаца и направите нови.
=> Посетите овде да бисте научили тиквицу од огреботина
Шта ћете научити:
Обрасци дизајна боца
На пример, Наћи ћете много примера од МВЦ обрасца до Једностраничних апликација до СААС обрасца. Ви именујете парадигму дизајна, а њу је већ испробао неко из заједнице и доступна вам је бесплатно.
У наставку је наведено неколико спремишта која вреди погледати.
Флуск
Флуск је пример који можете користити за стварање великих Фласк апликација које укључују СКЛАлцхеми, Доцкер и Нгинк. Има прелепо логичко раздвајање за креирање позадине, домена, погледа и модела у њихове одговарајуће слојеве.
Одлично користи Фласк Блуепринтс и прати фабрички образац дизајна. Лако је креирати екстензије у Флуск-у, а даље је лако садржати апликацију помоћу Доцкера. Погледајте његов изворни код овде .
Чутурица за колаче
Цоокиецуттер Фласк је шаблон тиквице са карактеристикама као што су повезивање средстава и минификација са веб-пакетима. Има почетне предлошке за регистрацију / аутентификацију корисника и изграђен је на Боотстрапу 4.
Цоокиецуттер је услужни програм командне линије за креирање пројекта Питхон пакета. То значи да ако користите овај образац, своју апликацију Фласк можете објавити и као ПиПИ. Овај пројекат се активно развија.
Вредно је проценити на овај линк .
Чутура пуна
Фласк фулл је још један напајан котао који користи Целери, МонгоЕнгине, Сигналс, Схелл команде, ВебСоцкет и евентлет. Прилично је добро интегрисан са Сваггер АПИ документима и Спхинк документима.
Оцените овај пројекат као његов извор. То је слободно доступно овде .
Мрзовољно
За креирање лаганих апликација, можда ћете желети да узмете у обзир Фласки. Доступан је изворни код компаније Фласки овде . Ово спремиште креирао је Мигуел Гринберг, који има преко 25 година искуства у веб развоју.
Створио је Фласки-а да пружи примере кода за концепте о којима се говори у његовој књизи Фласк Веб Девелопмент .
Који год оквир, оквир или шаблон да одаберете, сви они имају неке стандардне карактеристике и разговарају о њима на свој начин. Овде ћемо навести неке од тих карактеристика и разговарати о њима, као и применити оне који користе Фласк-Аппбуилдер у нашем примеру примера ове серије туторијала.
Овај водич говори о неким уобичајенијим обрасцима које ћете наћи у скоро свим веб апликацијама данас и које је лепо имати у комплету веб програмера.
Пример пријаве за тиквицу
Веб апликација обично захтева од корисника да се региструју и приступе ограниченом делу апликације на основу додељених привилегија. Корисници имају улоге засноване на дозволама. На пример, јавни корисник нема дозволу да креира другог корисника. Међутим, Админ корисник има те дозволе.
Понекад веб апликације аутоматизују регистрацију и креирање корисника додељивањем задатих или унапред дефинисаних дозвола.
Креирајте корисника ван мреже
Хајде да креирамо корисника помоћу команде фаб цреате-усер. Једном када употребите ову наредбу, добит ћете упите у наредбеном реду да бисте дали детаље о корисничком рачуну. Дајте детаље сличне онима приказаним доле и ваш Корисник је креиран.
Role (Public): Username: user1 User first name: User1 User last name: Last1 Email: user1@sthwebsite.com Password: Repeat for confirmation: ## various logs 2020-06-21 13:55:01,053:INFO:flask_appbuilder.security.sqla.manager:Added user user1 User user1 created.
Приметите да на крају излаза наредбе скла.манагер исписује поруке потврде за креирање корисника.
Сада приступите апликацији и пријавите се са детаљима које сте управо унели. Ако сте креирали корисника у производној бази података, проследите те детаље особи за коју сте креирали овај налог.
Идите на хттп: // лоцалхост: 8080 / логин и видећете образац за пријаву као што је приказано доле.

Када се корисник1 пријави, Корисник може видети поруку добродошлице.

Креирајте корисника на мрежи
Можда ће нам бити немогуће створити све кориснике ван мреже. Штавише, можда ће вам требати више техничке стручности за употребу команде фаб цреате-усер боце у производном окружењу. Можда ћете добити захтев за уклањање неког радног оптерећења од администратора који је већину времена задужен за креирање корисника.
Стога, у нашем примеру веб апликације, дозволимо корисницима да се сами региструју.
Користимо Гоогле-ову услугу реЦАПТЦХА да бисмо спречили злонамерне актере да приступе ограниченим деловима апликације.
Прво, региструјмо свој домен на Гоогле-овој услузи реЦАПТЦХА и преузмимо СИТЕ кључ и ТАЈНИ кључ.
Корак 1: Инсталирајте Фласк-Маил помоћу наредбе испод.
pip install Flask-Mail
Идите на хттпс://ввв.гоогле.цом/рецаптцха/интро/в3.хтмл и пријавите се као Администратор помоћу Гоогле налога.
Корак 2: Изаберите тип реЦаптцха.

Корак 3: Дајте домен за који желите да користите Гоогле-ову реЦаптцха.
Такође додајте лоцалхост на листу дозвољених домена за овај кључ и прихватите услове и пошаљите их. Можете га уклонити касније након развоја ове функције.
Корак 4: Забележите КЉУЧ СИТЕ, који је познат и као јавни кључ.

Корак 5: Забележите ТАЈНИ КЉУЧ који је познат и као приватни кључ.

Једном када забележите кључеве као што је горе поменуто, најбоље је да их сачувате на месту где се ови могу упутити и прочитати у конфигурацији. За ово упутство смо сачували вредности као променљиве окружења као СИТЕ_КЕИ и СЕЦРЕТ_КЕИ.
Сада отворите цонфиг.пи и ажурирајте га као што је приказано доле.
# Will allow user self registration AUTH_USER_REGISTRATION = True# The default user self registration role AUTH_USER_REGISTRATION_ROLE = 'Public'# Config for Flask-WTF Recaptcha necessary for user registration RECAPTCHA_PUBLIC_KEY = os.environ.get('SITE_KEY', None) RECAPTCHA_PRIVATE_KEY = os.environ.get('SECRET_KEY', None) # Config for Flask-Mail necessary for user registration MAIL_PORT = 587 MAIL_USE_SSL = False MAIL_SERVER = 'smtp.gmail.com' MAIL_USE_TLS = True MAIL_USERNAME = 'sthtestmail@gmail.com' MAIL_PASSWORD = 'Passw0rdqwerty' MAIL_DEFAULT_SENDER = 'sthtestmail0@gmail.com'
Можда ћете морати да омогућите мање сигуран приступ Гоогле налогу. Омогућите приступ налогу на доле наведеним УРЛ адресама ако запнете у било каквим проблемима повезаним са е-поштом.

- хттпс://аццоунтс.гоогле.цом/ДисплаиУнлоцкЦаптцха
- хттпс://суппорт.гоогле.цом/маил/?п=БадЦредентиалс
Сада на страници за пријаву можемо видети додатно дугме за регистрацију корисника. Једном када кликнете на регистрацију, видећемо многа поља заједно са реЦаптцха изазовом.

Једном када се региструјете са својом е-поштом и прођете изазов реЦаптцха, видећете поруку за потврду, као што је приказано доле.

Ако је адреса е-поште коју сте дали током регистрације важећа, добићете е-поруку за активацију налога сличну оној приказаној на доњој слици.

Фласк Админ
Ако сте прочитали остале водиче у овој серији водича за Фласк, приметићете да смо искористили уграђену безбедност која долази са Фласк-Аппбуилдер-ом. Прикази које смо додали помоћу адд_виев_но_мену нису заштићени. Међутим, погледи које смо додали на основу ДатаМоделс-а аутоматски су заштићени за администратора.
Алтернативно, могли бисмо да користимо Фласк-Админ, који би углавном постигао сличан исход. Фласк-Админ такође, дефинишемо погледе на објектно оријентисан начин. Веб страница на предњој страни представља методу на класи приказа коју изричито додајемо у интерфејс.
У овом упутству не користимо Фласк-Админ. Уместо тога, крећемо путем постизања истих резултата са већом брзином и прескакања потребе за знањем о изградњи безбедности око Логин-а, Аутхс-а, Улога и дозвола. Било је могуће јер смо користили Фласк-Аппбуилдер.
И Фласк-Аппбуилдер као и Фласк-Админ имају своје предности и недостатке. У случају Фласк-Админ, морамо знати да не постоје постојеће сигурносне претпоставке и можете да креирате апликације на основу вашег безбедносног модела. Да бисте сазнали више о Фласк-Админ, посетите овде и прођите кроз одговарајуће примере.
Отпремање датотеке боце
Готово све веб апликације данас захтевају чување и послуживање датотека. Типичан образац за њих је спремање датотека на путању на серверу, с неким информацијама за обављање радње на ускладиштеној датотеци и задржавање у апликацијским моделима и приказима.
Радићемо на сличном примеру. Изменимо наш модел песме додатним функцијама.
У датотеку моделс.пи унесите следећи код.
from flask import Markup, url_for from flask_appbuilder.models.mixins import FileColumn from flask_appbuilder.filemanager import get_file_original_name from flask_appbuilder import Model from sqlalchemy import Column, Integer, String, ForeignKey from sqlalchemy.orm import relationship class Song(Model): id = Column(Integer, primary_key=True) title = Column(String(200), nullable=False) rating = Column(Integer) album_id = Column(Integer, ForeignKey('album.id')) # for storing MP3 file of the song song_file = Column(FileColumn, nullable=False) album = relationship('Album') def __str__(self): return self.title def download(self): return Markup( ' Download ' ) def file_name(self): return get_file_original_name(str(self.song_file))
Изменили смо наш претходно створени модел Песме додавањем нове колоне типа ФилеЦолумн. Даље, додали смо још две колоне које ће бити додате у СонгсВиев за приказ назива датотеке и везе за преузимање учитане датотеке.
Метода тиквице урл_фор коришћена је заједно са Маркуп-ом за приказ Довнлоад-а као везе. Такође, користили смо методу гет_филе_оригинал_наме из Фласк-Аппбуилдер-а, јер се име датотеке чува спајањем у УУИД како би се избегла колизија између истих имена датотека.
Измените виевс.пи помоћу доле датог кода да бисте ажурирали одговарајући СонгсВиев.
class SongsView(ModelView): datamodel = SQLAInterface(Song) label_columns = {'file_name' : 'File Name', 'download': 'Download'} list_columns = ('title', 'file_name', 'download') show_columns = ('title', 'file_name', 'download')
У класи СонгсВиев споменули смо нове ознаке које треба приказати и желимо да наведемо само колоне поменуте на наведеној листи.
Овде треба да запамтите да смо модификовали модел базе података додавањем колоне у модел. Одговарајућа табела у бази података нема ову нову колону. Стога ћемо уклонити датотеку апп.дб јер радимо на бази СКЛите од последњег водича.
Такође, могли бисмо да користимо команду фласк дб миграте и извршимо неопходне промене у датотеци верзије, а за ажурирање табеле користимо надоградњу фласк дб. Међутим, промена коју смо увели је минимална и можемо поново створити базу података апликација и корисника.
Препоручујемо да у производњи размотрите употребу команди Фласк-Миграте кад год направите било какве промене у Шеми базе података ваше апликације.
Користите наредбе у наставку да бисте уклонили датотеку базе података и поново креирали администратора.
rm app.db flask fab create-db flask fab create-admin
Сада се пријавите у апликацију помоћу администраторских података и видећете измењени СонгсВиев као што је приказано на доњој слици.

Додајте песму са датотеком.

Једном када сачувате датотеку, колоне у приказу ће изгледати као што је приказано доле.

Обратите пажњу на следеће вредности у цонфиг.пи. Отпремљене датотеке ће се на овом путу чувати на серверу. За ово упутство, оно ће бити отпремљено на машину на којој развијамо овај примерак апликације.
Проверите путању за отпремање, као што је поменуто у цонфиг.пи. Датотеке се чувају у УУИД-овима, као што је приказано доле.

Боца ХТТПС
Што се развоја тиче, можда ћемо наставити да покрећемо нашу апликацију Фласк која ради без ХТТПС-а. Са сигурносног становишта, ХТТПС осигурава да се комуникација одвија између легитимног клијента и сервера.
Ова шифрована комуникација захтева да се успостави поверење између клијента и сервера, користећи ЦА сертификат са паром јавних и приватних кључева. Молимо прочитајте више о томе овде
У овом упутству ћемо вас упознати са методама за развој веб локација заснованих на Фласку помоћу ХТТП протокола током развоја.
Најбржи и најлакши начин за укључивање ХТТПС-а током развоја је коришћење адхоц ссл_цонтект-а, као што је доле поменуто у рун.пи. Међутим, молимо вас инсталирајте пиопенссл користећи пип у окружењу.
app.run(host='0.0.0.0', port=8080, debug=True, ssl_context='adhoc')
Након додавања ссл_цонтект, када одете на хттпс: // лоцалхост: 8080 /, добићете упозорење које изазива сумњу у валидност сертификата који се користи у овој комуникацији. Штавише, навигација на хттп: // лоцалхост: 8080 / више неће радити.
Стога је овај приступ помало гломазан и захтеваће да наставите да прихватате овај захтев сваки пут када поново покренете развојни сервер.
Морате да кликнете на несигурни приступ да бисте наставили да радите, као што је приказано доле.

Као алтернативу, да бисмо се развијали са хттпс функцијама, можемо проследити путању до сертификата и кључа у Питхон Туплеу параметру ссл_цонтект у методи извођења. Међутим, да бисте усвојили овај приступ, мораћете да генеришете самопотписани сертификат и кључ помоћу наредбе у наставку.
openssl req -x509 -newkey rsa:4096 -nodes -out mycert.pem -keyout mykey.pem -days 365
Дајте одговарајуће вредности за постављене упите.

Оставили смо све подразумеване вредности. Сада зауставите развојни сервер и проследите сертификат путање и путању кључа како је приказано доле.
app.run(host='0.0.0.0', port=8080, debug=True, ssl_context=('mycert.pem', 'mykey.pem'))
Овај приступ је такође сличан претходном методу коришћења Адхоц ссл_цонтект. Међутим, у овом случају детаљи остају дуже времена. Споменули смо 365 дана. Можете да одредите рок трајања до дана који су вам потребни. Штавише, ове датотеке могу се делити са осталим члановима тима ако се развијате у тиму.
У производном окружењу сертификате издаје ЦА, а Мигуел Гринберг расправља о неким случајевима коришћења овде . Препоручујемо да прочитате више детаља на тој страници.
Закључак
У овом упутству смо разговарали о неким обрасцима које веб програмери следе док развијају функције повезане са Фласк Логин, Фласк Админ, Фласк Филе Уплоад и Фласк ХТТПС. Дали смо примере кода, а читаоци могу и то да покушају.
У нашем следећем упутству ћемо покрити концепте проширења Фласка и видећемо како да креирамо функције засноване на РЕСТ АПИ-ју. Штавише, разговараћемо о томе како можемо да користимо Твиттер АПИ унутар Фласка.
који је најбољи софтвер за управљање задацима
=> Овде истражите серију обука за флашу
Препоручено читање
- Дизајн образаца у Јави: Синглетон, Фацтори Анд Буилдер
- Водич за Питхон боцу - Увод у боцу за почетнике
- Водич за Фласк АПИ са примером | Проширење тиквице помоћу АПИ-ја
- Апликација тиквица и изглед пројекта тиквице са нацртом и почетном траком
- Дјанго вс Фласк Вс Ноде: Који оквир одабрати
- Топ 31 популарна питања за интервју са Питхон Фласк-ом са одговорима
- 10 најбољих алата за дизајн базе података за изградњу сложених модела података
- Врхунских 11 трендова дизајна УИ / УКС: шта очекивати од 2021. и касније