Flaskel هو هيكل عظمي لجميع أنواع تطبيقات Flask مع APIs REST أم لا.
flaskel init --helpflaskel.builder.AppBuilderflaskel.testerflaskel.http يتم تسجيل الإضافات عبر AppBuilder ، انظر: flaskel.scripts.skeleton.ext
امتدادات الأطراف الثالثة:
ملحقاتي الخارجية:
الامتدادات الداخلية:
flaskel.ext.crypto.argon.Argon2 (Argon2)flaskel.ext.datetime.FlaskDateHelper (Date_Helper)flaskel.ext.ipban.FlaskIPBan (Ipban)flaskel.ext.redis.FlaskRedis (redis)flaskel.ext.useragent.UserAgent (useragent)flaskel.ext.redis.FlaskRedis (redis)flaskel.ext.sendmail.ClientMail (client_mail) يمتد قارورة البريدflaskel.ext.jobs.APJobs (Scheduler) يمتد Flask-apchedulerflaskel.ext.mongo.FlaskMongoDB (Mongo) يمتد Flask-Pymongoflaskel.ext.healthcheck.health.HealthCheck (HealthCheck) ، الشيكات الافتراضية: النظرات ، mongo ، redis ، sqlalchemy ، النظام ، الخدمات (HTTP API)ملحقات الغلاف:
flaskel.ext.caching.Cache يلف القفلflaskel.ext.limit.RateLimit يلف Flask-Limiterflaskel.ext.auth.DBTokenHandler ، flaskel.ext.auth.redistokenhandlerامتدادات إضافية:
flaskel.extra.mobile_support.MobileVersionCompatibility (mobile_version)flaskel.extra.stripe.PaymentHandler (شريط) يأتي Flaskel مع وجهات نظر مفيدة لأكثر واجهات برمجة التطبيقات الشائعة أو وحدات تحكم الويب البسيطة:
flaskel.views.base.BaseViewflaskel.views.rpc.JSONRPCViewflaskel.views.template.RenderTemplateflaskel.views.template.RenderTemplateStringflaskel.views.base.Resourceflaskel.views.resource.CatalogResourceflaskel.views.resource.Restfulflaskel.views.resource.PatchApiViewflaskel.views.proxy.ProxyViewflaskel.views.proxy.ConfProxyViewflaskel.views.proxy.TransparentProxyViewflaskel.views.proxy.JsonRPCProxyflaskel.views.proxy.SchemaProxyViewflaskel.views.static.StaticFileViewflaskel.views.static.SPAViewflaskel.views.token.BaseTokenAuthوجهات نظر إضافية:
flaskel.extra.apidoc.ApiDocTemplateflaskel.extra.apidoc.ApiSpecTemplateflaskel.extra.media.ApiMediaflaskel.extra.media.GetMediaflaskel.extra.mobile_support.MobileReleaseViewFlaskel يأتي مع مكونات المساعدين من SqlalChemy:
flaskel schema --help class SQLAModel ( Model ):
def columns ( self ): ...
def get_one ( cls , raise_not_found = True , to_dict = True , * args , ** kwargs ): ...
def get_list ( cls , to_dict = True , restricted = False , order_by = None , page = None , page_size = None , max_per_page = None , * args , ** kwargs ): ...
def query_collection ( cls , params = None , * args , ** kwargs ): ...
def update ( self , attributes ): ... class ConfigProxy : ...
class ExtProxy : ... from flaskel import webargs
@ webargs . query (...)
...
@ webargs . payload (...)
...
@ webargs . query_paginate ()
...
webargs . paginate ()
webargs . Field . integer ()
webargs . Field . string ()
webargs . Field . decimal ()
webargs . Field . boolean ()
webargs . Field . positive ()
webargs . Field . not_negative ()
webargs . Field . not_positive ()
webargs . Field . negative ()
webargs . Field . isodate ()
webargs . Field . list_of ()
webargs . OptField . integer ()
webargs . OptField . string ()
webargs . OptField . decimal ()
webargs . OptField . boolean ()
webargs . OptField . positive ()
webargs . OptField . not_negative ()
webargs . OptField . not_positive ()
webargs . OptField . negative ()
webargs . OptField . isodate ()
webargs . OptField . list_of ()
webargs . ReqField . integer ()
webargs . ReqField . string ()
webargs . ReqField . decimal ()
webargs . ReqField . boolean ()
webargs . ReqField . positive ()
webargs . ReqField . not_negative ()
webargs . ReqField . not_positive ()
webargs . ReqField . negative ()
webargs . ReqField . isodate ()
webargs . ReqField . list_of () class PayloadValidator :
schemas = SCHEMAS
validator = JSONSchema
@ classmethod
def validate ( cls , schema , strict = True ): ...هناك العديد من مفاتيح التكوين التي توفرها العديد من المصادر ، يتم تجاوز نفس المفتاح في مصدر مختلف. أولويات المصدر (منخفضة إلى عالية):
APP_CONFIG_FILEpython-decouple ، لذلك يمكن تخزينها في .env أو الإعدادات.التكوين عبر ENV:
DEBUG : (افتراضي: Bool = True)TESTING : (افتراضي: bool = debug)APP_NAME : (افتراضي = flaskel)APP_HOST : (افتراضي = 127.0.0.1)APP_PORT : (افتراضي: int = 5000)FLASK_APP : (افتراضي = التطبيق: التطبيق)SERVER_NAME : (افتراضي = app_host: app_port)FLASK_ENV : (افتراضي = التطوير)LOCALE : (Default = "EN_EN.UTF8")JWT_ALGORITHM : (default = "hs512")JWT_ACCESS_TOKEN_EXPIRES : (افتراضي: يوم واحد)JWT_REFRESH_TOKEN_EXPIRES : (افتراضي: 14 يومًا)TEMPLATES_AUTO_RELOAD : (افتراضي: bool = debug)EXPLAIN_TEMPLATE_LOADING : (افتراضي: bool = false)SEND_FILE_MAX_AGE_DEFAULT : (افتراضي: 1 يوم)APIDOCS_ENABLED : (افتراضي: bool = true)CONF_PATH : (افتراضي = flaskel/نصوص/هيكل عظمي/دقة)SQLALCHEMY_DATABASE_URI : (افتراضي = sqlite: ///db.sqlite)REDIS_URL : (افتراضي = mongodb: // localhost)REDIS_CONN_TIMEOUT : (افتراضي: تعويم = 0.05)MONGO_URI : (افتراضي = redis: //127.0.0.1: 6379)MONGO_CONN_TIMEOUT_MS : (افتراضي: int = 100)MONGO_SERVER_SELECTION_TIMEOUT_MS : (افتراضي: int = 100)BASIC_AUTH_USERNAME : (افتراضي = مسؤول)BASIC_AUTH_PASSWORD : (افتراضي = مسؤول)ADMIN_EMAIL : (افتراضي = مسؤول)ADMIN_PASSWORD : (افتراضي = مسؤول)MAIL_DEBUG : (افتراضي: bool = debug)MAIL_SERVER : (افتراضي = sendria.local)MAIL_PORT : (افتراضي: int = 62000)MAIL_USERNAME : (افتراضي: "")MAIL_PASSWORD : (افتراضي: "")MAIL_USE_SSL : (افتراضي: bool = false)MAIL_USE_TLS : (افتراضي: bool = false)MAIL_DEFAULT_SENDER : (افتراضي = [email protected])MAIL_DEFAULT_RECEIVER : (افتراضي = [email protected])MAIL_RECIPIENT : (افتراضي: [email protected])MAIL_TIMEOUT : (افتراضي: int = 60)PREFERRED_URL_SCHEME : (افتراضي = http if flask_env = تطوير https)LOG_BUILDER : (افتراضي = نص)LOG_APP_NAME : (افتراضي = app_name)LOG_LOGGER_NAME : (افتراضي = flask_env)LOG_REQ_SKIP_DUMP : (افتراضي = لا اختبار)LOG_RESP_SKIP_DUMP : (افتراضي = لا اختبار)LOG_RESP_HEADERS : (افتراضي = [])LOG_REQ_HEADERS : (افتراضي = [])CF_STRICT_ACCESS : (افتراضي = خطأ)VERSION_STORE_MAX : (افتراضي = 6)VERSION_CACHE_EXPIRE : (افتراضي = 60)HTTP_PROTECT_BODY : (افتراضي = خطأ)HTTP_DUMP_REQ_BODY : (افتراضي = خطأ)HTTP_DUMP_RESP_BODY : (افتراضي = خطأ)HTTP_SSL_VERIFY : (افتراضي = صحيح)HTTP_TIMEOUT : (افتراضي = 10)USE_X_SENDFILE : (افتراضي = لا تصحيح)ENABLE_ACCEL : (افتراضي = صحيح)WSGI_WERKZEUG_LINT_ENABLED : (افتراضي = اختبار)WSGI_WERKZEUG_PROFILER_ENABLED : (افتراضي = اختبار)WSGI_WERKZEUG_PROFILER_FILE : (default = "profiler.txt")WSGI_WERKZEUG_PROFILER_RESTRICTION : *(افتراضي: قائمة = [0.1])SQLALCHEMY_ECHO : (افتراضي = اختبار)JSONRPC_BATCH_MAX_REQUEST : (افتراضي = 10)IPBAN_ENABLED : (افتراضي = صحيح)IPBAN_KEY_PREFIX : (افتراضي = app_name)IPBAN_KEY_SEP : (افتراضي = /)IPBAN_BACKEND : (افتراضي = محلي)IPBAN_BACKEND_OPTS : (افتراضي = {})IPBAN_COUNT : (افتراضي = 5)IPBAN_SECONDS : (افتراضي = 3600)IPBAN_NET_WHITELIST : (افتراضي = 127.0.0.0/8)IPBAN_IP_WHITELIST : (افتراضي = 127.0.0.1)IPBAN_STATUS_CODE : (افتراضي = 403)IPBAN_CHECK_CODES : (افتراضي = 404،405،501)RATELIMIT_ENABLED : (افتراضي = لا تصحيح)RATELIMIT_HEADERS_ENABLED : (افتراضي = صحيح)RATELIMIT_IN_MEMORY_FALLBACK_ENABLED : (افتراضي = صحيح)RATELIMIT_STORAGE_URL : (افتراضي = redis_url)RATELIMIT_KEY_PREFIX : (افتراضي = app_name)SCHEDULER_AUTO_START : (افتراضي = صحيح)SCHEDULER_API_ENABLED : (افتراضي = خطأ)CACHE_KEY_PREFIX : (افتراضي = app_name)CACHE_REDIS_URL : (افتراضي = redis_url)CACHE_DEFAULT_TIMEOUT : (افتراضي = 1 ساعة)CACHE_DISABLED : (افتراضي = خطأ)تكوين التطبيق الثابت:
ERROR_PAGE : (default = "core/error.html")DATABASE_URL : (افتراضي = sqlalchemy_database_uri)SECRET_KEY_MIN_LENGTH : (افتراضي: int = 256)PRETTY_DATE : (default = "٪ d ٪ b ٪ y ٪ i: ٪ m ٪ p")DATE_ISO_FORMAT : (افتراضي = "٪ y- ٪ m- ٪ dt ٪ h: ٪ m: ٪ s")JWT_DEFAULT_SCOPE : (افتراضي = لا شيء)JWT_DEFAULT_TOKEN_TYPE : (default = "Bearer")JWT_TOKEN_LOCATION : (افتراضي = ["رؤوس" ، "query_string"])HTTP_DUMP_BODY : (افتراضي: [خطأ ، خطأ])ACCEL_BUFFERING : (افتراضي = صحيح)ACCEL_CHARSET : (default = "utf-8")ACCEL_LIMIT_RATE : (Default = "Off")RB_DEFAULT_ACCEPTABLE_MIMETYPES : (default = ["application/json" ، "application/xml"])REQUEST_ID_HEADER : (default = "x-request-id")CACHE_TYPE : (default = "flask_caching.backends.redis")CACHE_OPTIONS : (DICT)CORS_EXPOSE_HEADERS : (قائمة)RATELIMIT_STORAGE_OPTIONS : (DICT)SCHEDULER_JOBSTORES : (DICT)SCHEDULER_EXECUTORS : (DICT)SCHEDULER_JOB_DEFAULTS : (DICT)LIMITER : (قول)FAIL : (Default = "1/second")FAST : (افتراضي = "30/دقيقة")MEDIUM : (افتراضي = "20/دقيقة")SLOW : (افتراضي = "10/دقيقة")BYPASS_KEY : (default = "x-limiter-bypass")BYPASS_VALUE : (default = "bypass-rate-limit") يتم تحميل تكوينات إضافية اختياريا عبر الملفات في المجلد CONF_PATH :
APISPEC : (Swagger.yaml)SCHEMAS : (Schemas.yaml)SCHEDULER_JOBS : (Scheduler.yaml)LOGGING : (log.yaml) إذا كان مفقودًا ، flaskel.utils.logger:LOGGING افتراضيالتكوين محدد للملحقات الداخلية:
flaskel.ext.crypto.argon.argon2
ARGON2_ENCODING : (افتراضي = UTF-8)ARGON2_TIME_COST : (افتراضي = 3)ARGON2_HASH_LEN : (افتراضي = 32)ARGON2_PARALLELISM : (افتراضي = 4)ARGON2_SALT_LEN : (افتراضي = 16)ARGON2_MEMORY_COST : (افتراضي = 65536) 64 MIBARGON2_PROFILE : (افتراضي = منخفض) سمح منخفض | عاليةflaskel.ext.healthcheck.Health.HealthCheck
HEALTHCHECK_ABOUT_LINK : (افتراضي = لا شيء)HEALTHCHECK_VIEW_NAME : (افتراضي = HealthCheck)HEALTHCHECK_PATH : (افتراضي = /HealthCheck)HEALTHCHECK_PARAM_KEY : (افتراضي = الشيكات)HEALTHCHECK_PARAM_SEP : (افتراضي = +)HEALTHCHECK_CONTENT_TYPE : (افتراضي = التطبيق/الصحة+JSON)flaskel.ext.dateTime.flaskDateHelper
DATE_HELPER_COUNTRY : (افتراضي = it)DATE_HELPER_PROV : (افتراضي = لا شيء)DATE_HELPER_STATE : (افتراضي = لا شيء)DATE_ISO_FORMAT : (افتراضي = "٪ y- ٪ m- ٪ dt ٪ h: ٪ m: ٪ s")DATE_PRETTY : (افتراضي = "٪ d ٪ b ٪ y ٪ i: ٪ m ٪ p")flaskel.ext.jobs.apjobs
SCHEDULER_AUTO_START : (افتراضي = خطأ)SCHEDULER_PATCH_MULTITHREAD : (افتراضي = صحيح)SCHEDULER_LOCK_FILE : (افتراضي = .scheduler.lock)flaskel.ext.ipban.flaskipban
IPBAN_ENABLED : (افتراضي = صحيح)IPBAN_KEY_PREFIX : (افتراضي = app_name)IPBAN_KEY_SEP : (افتراضي = /)IPBAN_BACKEND : (افتراضي = محلي)IPBAN_BACKEND_OPTS : (افتراضي = {})IPBAN_COUNT : (افتراضي = 5)IPBAN_SECONDS : (افتراضي = 3600)IPBAN_NET_WHITELIST : (افتراضي = 127.0.0.0/8)IPBAN_IP_WHITELIST : (افتراضي = 127.0.0.1)IPBAN_STATUS_CODE : (افتراضي = 403)IPBAN_CHECK_CODES : (افتراضي = 404،405،501)flaskel.ext.caching.caching
CACHE_TYPE : (default = "flask_caching.backends.redis")CACHE_REDIS_URL : (افتراضي = redis_url)CACHE_DEFAULT_TIMEOUT : (افتراضي = ثانية. ساعة)CACHE_KEY_PREFIX : (افتراضي = app_name)CACHE_OPTIONS : (DICT) انتقل إلى مثيل عميل redisflaskel.ext.redis.flaskredis
REDIS_URL : (افتراضي = redis: // localhost: 6379/0)REDIS_OPTS : (DICT) انتقل إلى مثيل عميل redisflaskel.ext.mongo.flaskmongodb
MONGO_URI : (افتراضي = mongodb: // localhost)MONGO_OPTS : (DICT) انتقل إلى مثيل عميل MongoDBflaskel.ext.useragent.useragent
USER_AGENT_AUTO_PARSE : (افتراضي = خطأ)flaskel.extra.stripe.paymentHandler (شريط)
STRIPE_SECRET_KEY :STRIPE_PUBLIC_KEY :STRIPE_WEBHOOK_SECRET :STRIPE_DEBUG : (افتراضي = خطأ)STRIPE_DEFAULT_CURRENCY : (افتراضي = EUR)STRIPE_API_VERSION : (افتراضي = 2020-08-27)flaskel.extra.mobile_support.mobileversioncompatibility (mobile_version)
VERSION_STORE_MAX : (افتراضي = 6)VERSION_CACHE_EXPIRE : (افتراضي = 3600)VERSION_CHECK_ENABLED : (افتراضي = صحيح)VERSION_AGENT_HEADER : (افتراضي = x-agent)VERSION_API_HEADER : (افتراضي = x-api-version)VERSION_STORE_KEY : (افتراضي = x_upgrade_needed)VERSION_HEADER_KEY : (افتراضي = x-mobile-version)VERSION_UPGRADE_HEADERVERSION_AGENTS : (افتراضي = (Android ، iOS))VERSION_SKIP_STATUSES : (افتراضي = (محظور ، not_found ، method_not_allyed ، too_many_requests)))flaskel.extra.notification.NotificationHandler
FCM_API_KEY : إلزامي إذا تم استخدامهflaskel.extra.media.service.mediaservice
MEDIA : (قفلة)ALLOWED_EXTENSIONS : (افتراضي: [PNG ، JPG])UPLOAD_FOLDER :EXTERNAL_URL :