赞
踩
Django功能大而全,Flask只包含基本的配置;
Django有模板,表单,路由,认证,基本的数据库管理等等内建功能。
与之相反,Flask只是一个内核,默认依赖于两个外部库: Jinja2 模板引擎和 Werkzeug WSGI 工具集,其他很多功能都是以扩展的形式进行嵌入使用。
Flask 比 Django 更灵活 ,
flask非常适用于开发API接口
导入类的配置文件(导入类的路径)
方法
首先创建一个PY文件,写一个类,类中写一些配置信息的静态字段
app.config.from_object("python类或类的路径")
def from_object(self, obj):
if isinstance(obj, string_types): # 判断是否是字符串
obj = import_string(obj) # 利用import_module封装的函数拿到类
for key in dir(obj): # 遍历自己写的配置类
if key.isupper(): # 判断类的属性是不是大写
self[key] = getattr(obj, key) # 保存进配置信息
原理
利用importlib
模块中的import_module
函数:
o = importlib.import_module("aa.bb")
利用getattr('var1')
获取类中或者模块中的属性
获取到类之后遍历类的属性,在利用getattr()
获取所有大写的类的静态变量,写进config配置文件字典
方式一
@app.route('/user/<username>') @app.route('/post/<int:post_id>') @app.route('/post/<float:post_id>') @app.route('/post/<path:path>') @app.route('/login', methods=['GET', 'POST']) # 路由中的数据类型 DEFAULT_CONVERTERS = { 'default': UnicodeConverter, 'string': UnicodeConverter, 'any': AnyConverter, 'path': PathConverter, 'int': IntegerConverter, 'float': FloatConverter, 'uuid': UUIDConverter, }
方式二
def index():
pass
app.add_url_rule('/', 'index', index)
'''
add_url_rule(self,rule,endpoint=None,view_func=None,
provide_automatic_options=None,**options)
rule-----------------------------URL规则为字符串
endpoint-------------------------字符串,端点名字,不设置默认为函数名
view_func------------------------函数名
provide_automatic_options-------- 未设置provide_automatic_options,则进入默认的OPTIONS请求回应,否则请求endpoint匹配的函数执行,并返回内容
options -------------------------请求方式,options=['GET','POST']
'''
规则
属性 | 说明 | 示例 |
---|---|---|
Truestrict_slashes | False不严格,True严格,默认=None | @app.route('/index',strict_slashes=False) |
redirect_to | 重定向到指定地址 | @app.route('/index/<int:nid>',redirect_to='/home/<nid>' @app.route('/index/<int:nid>', redirect_to=func) |
subdomain | 子域名访问(必须配置’SERVER_NAME’) | app.config['SERVER_NAME'] = 'wupeiqi.com:5000' @app.route("/", subdomain="admin") |
子域名带正则 | @app.route("/dynamic", subdomain="<username>") def username_index(username) |
创建一个和项目名相同的文件夹 (” crm“ ------文件夹)
在新文件夹(” crm“)内创建__init__.py
文件,并在里面实例化
from flask import Flask
def create_app():
app = Flask(__name__) # 实例化flask
return app
创建主程序文件xxx.py
from crm import create_app # 导入自己写的实例化flask文件
app = create_app()
if __name__ == '__main__':
app.run()
在新文件夹(” crm“)中创建视图文件夹 views
在视图文件夹 views下可创建多个视图python文件
例:account.py
from flask import Blueprint # 导入蓝图
ac = Blueprint('ac',__name__) # 创建蓝图对象
@ac.route('/login')
def login():
return 'login'
@ac
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。