当前位置: 首页 > news >正文

电子商务网站建设是学什么做网站安全认证

电子商务网站建设是学什么,做网站安全认证,网站几几年做的怎么查,人工智能在线ai写作网站简介 Flask是一个用Python编写的Web应用程序框架#xff0c;该框架简单易用、模块化、灵活性高。 该笔记主要记录Flask的关键要点和容易踩坑的地方 Flask 日志配置 Flask 中的自带logger模块#xff08;也是python自带的模块#xff09;#xff0c;通过简单配置可以实现…简介 Flask是一个用Python编写的Web应用程序框架该框架简单易用、模块化、灵活性高。 该笔记主要记录Flask的关键要点和容易踩坑的地方 Flask 日志配置 Flask 中的自带logger模块也是python自带的模块通过简单配置可以实现将日志记录到日志文件中记录关键日志有助于以后分析问题更详细的logging配置可以自行去百度。 # 日志模配置 # coding : utf-8import os import logging from logging.handlers import RotatingFileHandlerdef init_app(app):param app : FLask实列启动时的appbasedir os.path.abspath(os.path.dirname(__file__))# Formatterformatter logging.Formatter(%(asctime)s %(levelname)s %(lineno)s %(message)s)# 日志配置log_path LOG_PATH os.path.join(basedir, logs)log_info os.path.join(log_path, flask.log)if not os.path.exists(log_path):os.mkdir(log_path)app.config[LOG_PATH] log_pathapp.config[LOG_PATH_INFO] log_infoapp.config[LOG_FILE_MAX_BYTES] 100 * 1024 * 1024# 轮转数量是 10 个app.config[LOG_FILE_BACKUP_COUNT] 10# FileHandler Infofile_handler_info RotatingFileHandler(filenamelog_info)file_handler_info.setFormatter(formatter)file_handler_info.setLevel(logging.INFO)app.logger.addHandler(file_handler_info)from flask import Flask from log_hander import init_appapp Flask(__name__)init_app(app)app.route(/) def test():app.logger.info(hello world)return hello world正常情况下日志flask.log中会输出 ”hello world“信息但实际情况却没有 这里有个坑就是在init_app 函数最后需要再加上一段代码 app.logger.setLevel(logging.INFO) 这个问题困扰我很长时间 Flask Blueprint Flask的简单之处就是一个py文件就可以创建一个http服务 from flask import Flask from log_hander import init_appapp Flask(__name__)app.route(/,methods[GET]) def test():app.logger.info(hello world)return hello world # 添加任意数量的 处理函数 app.run()实际项目中不能把所有的业务处理都放到一个py文件中那么就需要划分模块了。 蓝图Blueprint可以帮助我们划分模块有点类似asp.net mvc、java springboot中的控制器 一般的做法建立一个python包在里面添加我们的模块文件根据业务划分每个模块中定义一个蓝图Blueprint最后在app中注册蓝图Blueprint。 home.py 模块 # coding : utf-8from flask import Blueprint from flask import render_templatehome_blueBlueprint(home,__name__)# 访问路径 # http://ip:port/home # http://ip:port/home/index home_blue.route(/,methods[GET]) home_blue.route(/index,methods[GET]) def index():首页return render_templatereturn render_template(index.html,titleHome Page)home_blue.route(/welcom,methods[GET]) def welcomPage():return render_template(welcome_iframe.html,titleWelcom Page)passlogin.py 模块 # coding : utf-8 from flask import Blueprint from flask import render_templatelogin_blue Blueprint(login, __name__)# 访问路径 # http://ip:port/ # http://ip:port/indexlogin_blue.route(/, methods[GET]) login_blue.route(/index, methods[GET]) def index():登陆首页return render_templateif user_id None:return render_template(login.html,title登录页)login_blue.route(/login_user, methods[POST]) def user_login():登录:return:try:# 登录逻辑return jsonify(common_tools.get_res_model(None, 验证通过, True))except:return jsonify(common_tools.get_res_model(None, 验证未通过, False)) _init_.py # coding : utf-8 from flaskAdmin.views.home import home_blue from flaskAdmin.views.login import login_bluedef init_route(app):app.register_blueprint(login_blue,url_prefix/)app.register_blueprint(home_blue,url_prefix/home)app.py中设置 from flask import Flask from my_moudle import init_routeapp Flask(__name__) init_route(app)app.run()templates 过滤器 在Flask中过滤器filters是一种用于处理输入并生成输出的函数用于在模板渲染过程中转换数据。Flask内置了多种过滤器同时支持自定义过滤器。这里主要是说过自定义过滤器 app中定义过滤器 使用app.template_filter(“filter name”) 添加 from flask import Flask from log_hander import init_appapp Flask(__name__)app.template_filter(format_float) def formater_float(val:float):定义一个格式化浮点数据的过滤器return {:.2f}.format(val)app.run()使用过滤器 div{{my_value|format_float}} /divBlueprint中定义 使用blue.app_template_filter(“filter name”)添加 blue.app_template_filter(format_float) def formater_float(val:float):定义一个格式化浮点数据的过滤器return {:.2f}.format(val)注意Blueprint中定义的过滤器是全局的所有模板都可以使用 ORM sqlalchemy 框架是我的首选。 安装pip install Flask-SQLAlchemy model定义 # coding: utf-8 from sqlalchemy import Column, DateTime, String, Text from sqlalchemy.dialects.mysql import INTEGER from sqlalchemy.ext.declarative import declarative_base from flask_sqlalchemy import SQLAlchemyBase declarative_base() metadata Base.metadataclass User(Base):__tablename__ user# 指定ID对应的数据字段model定义字段与数据字段不一致时ID Column(uuid,String(64, utf8_bin), primary_keyTrue) UserCode Column(INTEGER(11), nullableFalse)UserRealName Column(String(64, utf8_bin), nullableFalse)DelFlag Column(String(2, utf8_bin), nullableFalse)PassWord Column(String(128, utf8_bin), nullableFalse)Remark Column(Text(collationutf8_bin))CreateDate Column(DateTime, nullableFalse, comment创建日期)LastLoginTime Column(DateTime, comment最后一次登录日期)ValidityOfTime Column(DateTime, comment账户有效期)UserRole Column(String(64, utf8_bin), nullableTrue)# ... db SQLAlchemy()app.py 中配置 from flask import Flask from db_model import dbapp Flask(__name__)# 关键步骤 # SQLALCHEMY_DATABASE_URI 数据库连接字符串 app.config[SQLALCHEMY_DATABASE_URI] mysqlpymysql://usermame:passwordhost:port/dbname?charsetutf8 app.config[SQLALCHEMY_TRACK_MODIFICATIONS] True # 跟踪对象修改有点类似EF中的状态跟踪 app.config[SQLALCHEMY_ECHO] False # 是否打印SQL日志 db.init(app)app.run()Session web离不开session。可以使用Flask-Session模块也可以自定义实现原理并不复杂这里不罗嗦了 安装pip install Flask-Session app.py 中配置 from flask import Flask from datetime import timedeltaapp Flask(__name__)app.config[SESSION_TYPE]redis # 需要额外安装redis模块 app.config[SESSION_REDIS]Redis(host127.0.0.1,port6379) app.config[SESSION_USE_SIGNER]True # 使用字符存储 app.config[SECRET_KEY]FLASK_SYSADMIN # session 加密key app.config[SESSION_PERMANENT]False app.config[PERMANENT_SESSION_LIFETIME]timedelta(seconds60*20) # session超时时间app.run()使用方式 # 导入session模块 from flask import sessiondef func():# ...session[user_id] user.IDsession[user_code] user.UserCode# ...建议将session信息存储的redis中方便后期分布式部署或作集群时共享登录信息 部署 Flask自带一个服务器但是也明确指出自带的服务器只能用于开发环境不能用于生产环境。 linux Linux环境可以使用uwsgi部署但是uwsgi需要自己编译。有兴趣的化可以百度查一下这里不推荐。 windows windows环境下可以部署到IIS中IIS最低版本7.0至少时winserver 2008以后的版本IIS中部署python web的机会不多但网上确实有部署教程有兴趣的可以自行搜索。 uvicorn 、tornado承载 uvicorn 、tornado也是python的一种web框架是一种异步框架与Flask结合可以降低部署难度还可以享受Flask开发带来的便利。 这里演示一下tornado的承载方式 将Flask主项目放到一个pathon包中经app的声明迁移到_init_.py 中 runserver.py # coding: utf-8 from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoop from flaskAdmin import app,config import sys import redef main():HOST config.APP_HOSTPORT config.APP_PORTif len(sys.argv) 3:_ip_checkr^(\d{1,3}\.){3}\d{1,3}$ip_addr sys.argv[1]ip_port sys.argv[2]if re.match(_ip_check,ip_addr) !None and re.match(r^[1-9]\d{1,5}$,ip_port)!None:PORTint(ip_port)HOSTip_addrhttp_serverHTTPServer(WSGIContainer(app))http_server.listen(PORT,HOST)IOLoop.instance().start()if __name__ __main__:main()使用uvicorn 、tornado承载需要注意一点如果你的服务需要处理高并发的场景一定要在服务的前面加一个代理来限制最高并发数量否则你的服务可能会出现崩溃的情况这是uvicorn 、tornado一个大坑两个库都没有做最大并发限制如果并发超过服务器主机的最大限制操作系统会报一个 select描述符错而这两个库并不处理这个异常针对这个问题stackoverflow论坛上有很多人吐槽。 https 生成密钥windows环境下需要自行安装openssl # 生成私钥按照提示填写内容 openssl genrsa -des3 -out server.key 1024# 生成csr文件 按照提示填写内容 openssl req -new -key server.key -out server.csr# Remove Passphrase from key cp server.key server.key.org openssl rsa -in server.key.org -out server.key# 生成crt文件有效期1年365天 openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crtFlask app中配置的方式 from flask import Flask from log_hander import init_appapp Flask(__name__)if __name__ __main__:app.run(host127.0.0.1,port10262,ssl_context (SLL_CRT_PATH,SSL_KEY_PATH)) # 设置ssl 密钥路径tornado承载中配置 如果使用tornado承载部署可以在tornado.httpserver.HTTPServer中设置密钥 http_serverHTTPServer(WSGIContainer(app),ssl_options{certfile:SLL_CRT_PATH,keyfile:SSL_KEY_PATH})
http://www.zqtcl.cn/news/467810/

相关文章:

  • 网站标题上的小图标怎么做的霞浦建设局网站
  • 国外那些网站做展厅比较好vp代理商网站管理系统
  • 广州最大网站建设wordpress数字超市
  • 怎么提高网站seo优化关键字排名wordpress媒体库搜索
  • 伊春网站制作怎么做视频网站赚钱吗
  • 前端网站开发邹城住房城乡建设部网站
  • 淘宝u站怎么做网站的网站建设费 科研 类
  • 代点任意广告链接网站怎样做才能让百度搜到网站产品
  • 宿迁网站搭建南宁建设局
  • app官网入口昆明排名优化
  • 新乡网站建设开发wordpress如何添加一个文章列表页
  • 中国3大做外贸的网站seo建站营销
  • 建站免费加盟高台县建设局网站
  • 网站联盟推广江门提供网站制作平台
  • 百度上面如何做网站asp源码下载
  • 婚庆网站的设计意义网站规格
  • 网站收录率嘉兴网站开发公司
  • 优秀的设计网站不备案 没版权 网站
  • 建设 互动 网站 模式网络营销模式不是孤立存在的
  • 怡梦姗网站做么上海21世纪人才网官网登录
  • 家政网站建设方案分析哈尔滨做网站找哪家好
  • 如何建设论坛网站营销宣传策划方案
  • 企业网站推广排名技术网
  • 网站建设网页设计培训学校延边网站建设
  • 自己做网站需要的技术个人简历表格下载
  • 做网站建设小程序ukidc做电影网站
  • 网站内容分析软文范例100字
  • 网站建站策划用vs做网站
  • 如何建自己的网站做农村电子商务的网站有哪些内容
  • 手机销售网站设计怎么推广软件让别人下载