Flaskel เป็นโครงกระดูกสำหรับแอปพลิเคชัน Flask ทุกประเภทที่มี REST API หรือไม่
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) ขยาย flask-mailflaskel.ext.jobs.APJobs (Scheduler) ขยาย Flask-Apschedulerflaskel.ext.mongo.FlaskMongoDB (Mongo) ขยาย Flask-Pymongoflaskel.ext.healthcheck.health.HealthCheck (HealthCheck), การตรวจสอบเริ่มต้น: สายตา, Mongo, Redis, Sqlalchemy, ระบบ, บริการ (HTTP API)ส่วนขยาย wrapper:
flaskel.ext.caching.Cache wraps flask-cachingflaskel.ext.limit.RateLimit wraps flask-limiterflaskel.ext.auth.DBTokenHandler , flaskel.ext.auth.redistokenhandler wraps flask-jwtส่วนขยายเพิ่มเติม:
flaskel.extra.mobile_support.MobileVersionCompatibility (mobile_version)flaskel.extra.stripe.PaymentHandler (Stripe) Flaskel มาพร้อมกับมุมมองที่เป็นประโยชน์สำหรับ API ที่พบบ่อยที่สุดหรือตัวควบคุมเว็บที่เรียบง่าย:
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 หรือ settings.iniการกำหนดค่าผ่าน Env:
DEBUG : (ค่าเริ่มต้น: bool = true)TESTING : (ค่าเริ่มต้น: bool = debug)APP_NAME : (default = flaskel)APP_HOST : (ค่าเริ่มต้น = 127.0.0.1)APP_PORT : (ค่าเริ่มต้น: int = 5000)FLASK_APP : (ค่าเริ่มต้น = แอพ: แอป)SERVER_NAME : (default = app_host: app_port)FLASK_ENV : (ค่าเริ่มต้น = การพัฒนา)LOCALE : (default = "en_en.utf8")JWT_ALGORITHM : (default = "HS512")JWT_ACCESS_TOKEN_EXPIRES : (ค่าเริ่มต้น: 1 วัน)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 : (default = flaskel/scripts/skeleton/res)SQLALCHEMY_DATABASE_URI : (default = sqlite: ///db.sqlite)REDIS_URL : (default = mongoDb: // localhost)REDIS_CONN_TIMEOUT : (ค่าเริ่มต้น: float = 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 : (default = admin)BASIC_AUTH_PASSWORD : (default = admin)ADMIN_EMAIL : (default = admin)ADMIN_PASSWORD : (default = admin)MAIL_DEBUG : (ค่าเริ่มต้น: bool = debug)MAIL_SERVER : (default = sendria.local)MAIL_PORT : (ค่าเริ่มต้น: int = 62000)MAIL_USERNAME : (ค่าเริ่มต้น: "")MAIL_PASSWORD : (ค่าเริ่มต้น: "")MAIL_USE_SSL : (ค่าเริ่มต้น: bool = false)MAIL_USE_TLS : (ค่าเริ่มต้น: bool = false)MAIL_DEFAULT_SENDER : (default = [email protected])MAIL_DEFAULT_RECEIVER : (default = [email protected])MAIL_RECIPIENT : (ค่าเริ่มต้น: [email protected])MAIL_TIMEOUT : (ค่าเริ่มต้น: int = 60)PREFERRED_URL_SCHEME : (default = http ถ้า flask_env = การพัฒนาอื่น ๆ https)LOG_BUILDER : (default = text)LOG_APP_NAME : (default = app_name)LOG_LOGGER_NAME : (default = flask_env)LOG_REQ_SKIP_DUMP : (ค่าเริ่มต้น = ไม่ทดสอบ)LOG_RESP_SKIP_DUMP : (ค่าเริ่มต้น = ไม่ทดสอบ)LOG_RESP_HEADERS : (default = [])LOG_REQ_HEADERS : (default = [])CF_STRICT_ACCESS : (default = false)VERSION_STORE_MAX : (ค่าเริ่มต้น = 6)VERSION_CACHE_EXPIRE : (default = 60)HTTP_PROTECT_BODY : (default = false)HTTP_DUMP_REQ_BODY : (default = false)HTTP_DUMP_RESP_BODY : (default = false)HTTP_SSL_VERIFY : (default = true)HTTP_TIMEOUT : (ค่าเริ่มต้น = 10)USE_X_SENDFILE : (default = not debug)ENABLE_ACCEL : (default = true)WSGI_WERKZEUG_LINT_ENABLED : (ค่าเริ่มต้น = การทดสอบ)WSGI_WERKZEUG_PROFILER_ENABLED : (ค่าเริ่มต้น = การทดสอบ)WSGI_WERKZEUG_PROFILER_FILE : (default = "profiler.txt")WSGI_WERKZEUG_PROFILER_RESTRICTION : *(ค่าเริ่มต้น: list = [0.1])SQLALCHEMY_ECHO : (ค่าเริ่มต้น = การทดสอบ)JSONRPC_BATCH_MAX_REQUEST : (ค่าเริ่มต้น = 10)IPBAN_ENABLED : (default = true)IPBAN_KEY_PREFIX : (default = app_name)IPBAN_KEY_SEP : (ค่าเริ่มต้น = /)IPBAN_BACKEND : (default = local)IPBAN_BACKEND_OPTS : (default = {})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 : (default = not debug)RATELIMIT_HEADERS_ENABLED : (default = true)RATELIMIT_IN_MEMORY_FALLBACK_ENABLED : (default = true)RATELIMIT_STORAGE_URL : (default = redis_url)RATELIMIT_KEY_PREFIX : (default = app_name)SCHEDULER_AUTO_START : (default = true)SCHEDULER_API_ENABLED : (default = false)CACHE_KEY_PREFIX : (default = app_name)CACHE_REDIS_URL : (ค่าเริ่มต้น = redis_url)CACHE_DEFAULT_TIMEOUT : (เริ่มต้น = 1 ชั่วโมง)CACHE_DISABLED : (default = false)การกำหนดค่าแอปพลิเคชันแบบคงที่:
ERROR_PAGE : (default = "core/error.html")DATABASE_URL : (default = sqlalchemy_database_uri)SECRET_KEY_MIN_LENGTH : (ค่าเริ่มต้น: int = 256)PRETTY_DATE : (default = " %d %b %y %i: %m %p")DATE_ISO_FORMAT : (default = "%y-%m-%dt%h:%m:%s")JWT_DEFAULT_SCOPE : (default = none)JWT_DEFAULT_TOKEN_TYPE : (default = "ผู้ถือ")JWT_TOKEN_LOCATION : (default = ["ส่วนหัว", "query_string"]))HTTP_DUMP_BODY : (ค่าเริ่มต้น: [false, false])ACCEL_BUFFERING : (default = true)ACCEL_CHARSET : (default = "UTF-8")ACCEL_LIMIT_RATE : (default = "ปิด")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 : (dict)FAIL : (default = "1/วินาที")FAST : (default = "30/นาที")MEDIUM : (default = "20/นาที")SLOW : (default = "10/นาที")BYPASS_KEY : (default = "x-limiter-bypass")BYPASS_VALUE : (default = "บายพาสอัตรา จำกัด ") การกำหนดค่าเพิ่มเติมจะถูกโหลดผ่านไฟล์ในโฟลเดอร์ 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 : (default = 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 : (default = HealthCheck)HEALTHCHECK_PATH : (ค่าเริ่มต้น = /HealthCheck)HEALTHCHECK_PARAM_KEY : (ค่าเริ่มต้น = ตรวจสอบ)HEALTHCHECK_PARAM_SEP : (default = +)HEALTHCHECK_CONTENT_TYPE : (ค่าเริ่มต้น = แอปพลิเคชัน/สุขภาพ+JSON)flaskel.ext.datetime.flaskdateHelper
DATE_HELPER_COUNTRY : (ค่าเริ่มต้น = มัน)DATE_HELPER_PROV : (default = none)DATE_HELPER_STATE : (default = none)DATE_ISO_FORMAT : (default = "%y-%m-%dt%h:%m:%s")DATE_PRETTY : (default = " %d %b %y %i: %m %p")flaskel.ext.jobs.apjobs
SCHEDULER_AUTO_START : (default = false)SCHEDULER_PATCH_MULTITHREAD : (default = true)SCHEDULER_LOCK_FILE : (default = .scheduler.lock)flaskel.ext.ipban.flaskipban
IPBAN_ENABLED : (default = true)IPBAN_KEY_PREFIX : (default = app_name)IPBAN_KEY_SEP : (ค่าเริ่มต้น = /)IPBAN_BACKEND : (default = local)IPBAN_BACKEND_OPTS : (default = {})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 : (default = seconds.hour)CACHE_KEY_PREFIX : (default = app_name)CACHE_OPTIONS : (dict) ส่งผ่านไปยังอินสแตนซ์ไคลเอ็นต์ Redisflaskel.ext.redis.flaskredis
REDIS_URL : (ค่าเริ่มต้น = redis: // localhost: 6379/0)REDIS_OPTS : (dict) ส่งผ่านไปยังอินสแตนซ์ไคลเอนต์ Redisflaskel.ext.mongo.flaskmongoDB
MONGO_URI : (default = mongoDb: // localhost)MONGO_OPTS : (dict) ส่งผ่านไปยังอินสแตนซ์ไคลเอนต์ MongoDBflaskel.ext.useragent.useragent
USER_AGENT_AUTO_PARSE : (default = false)flaskel.extra.stripe.paymenthandler (Stripe)
STRIPE_SECRET_KEY :STRIPE_PUBLIC_KEY :STRIPE_WEBHOOK_SECRET :STRIPE_DEBUG : (default = false)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 : (default = true)VERSION_AGENT_HEADER : (default = x-agent)VERSION_API_HEADER : (default = x-Api-version)VERSION_STORE_KEY : (default = x_upgrade_needed)VERSION_HEADER_KEY : (default = x-mobile-version)VERSION_UPGRADE_HEADER : (default = x-umgrade-needed)VERSION_AGENTS : (default = (Android, iOS))VERSION_SKIP_STATUSES : (default = (forbidden, not_found, method_not_allowed, TOO_MANY_REQUESTS)))flaskel.extra.notification.notificationhandler
FCM_API_KEY : บังคับถ้าใช้flaskel.extra.media.service.mediaservice
MEDIA : (dict)ALLOWED_EXTENSIONS : (ค่าเริ่มต้น: [png, jpg])UPLOAD_FOLDER :EXTERNAL_URL :