标签:数据 pytho 装饰器 elf def run方法 url var ret
1.web程序运行的基本流程
{客户端发送请求 <-----> 服务器返回响应}
2.使用框架可以降低开发难度,提高开发效率。
3.Flask框架的基本认识:
特点:用Python语言实现的轻量、简洁、扩展性强
核心:werkzeug 和 Jinja2
4.虚拟环境:
创建虚拟环境:mkvirtualenv -p python3 名称
进入虚拟环境:workon
退出虚拟环境:deactivate
移除虚拟环境:rmvirtualenv 名称
5.依赖包:
生成依赖包:pip freeze > requirements.txt
安装依赖包:pip install -r requirements.txt
6.基本程序:
创建程序实例:__name__参数为字符串,表示模块名,可以确定程序所在位置,如果传入标准模块名,会影响静态路径的访问,不会影响视图函数的访问。
定义装饰器路由:通过程序实例调用route函数实现,底层是通过add_url_rule()函数实现,第一个参数rule、第二个参数endpoint(视图函数名的字符串形式),第三个参数视图函数名。
启动服务器:run方法可以启动服务器,可以指定调试debug,便于调试代码信息,自动跟踪代码的变化。
1 # 导入Flask 2 from flask import Flask 3 4 # 创建Flask类的对象 5 # 结论:__name__参数的作用:确认程序实例文件所在的位置。 6 # 1、必须要传入参数 7 # 2、参数类型必须是字符串 8 # 3、如果传入标准模块名,只会影响静态路径的访问,不会影响视图函数的访问。 9 app = Flask(__name__) 10 11 12 # 定义路由url地址 13 # endpoint:表示视图函数名的字符串形式。 14 # 不使用装饰器也可以实现路由映射。 15 16 @app.route(‘/Lee‘,methods=[‘POST‘,‘GET‘]) 17 def hello2018(): 18 # return 可以返回状态码,也可以返回不符合http协议的状态码,用来实现前后端的数据交互 19 """ 20 前端发送ajax: 21 $.ajax({ 22 url:‘/Lee‘, 23 data:。。。, 发送到后端的数据 24 contentType:‘‘, 发送到后端的数据类型 25 dataType:‘json‘ 后端返回的数据类型 26 success:function(resp){ 27 if (resp == ‘888‘){ 28 alert(errmsg) 29 }else{ 30 31 } 32 33 34 } 35 }) 36 37 errno=888,errmsg=‘用户名已注册‘ 38 39 40 :return: 41 """ 42 return ‘hello world2018‘,888 43 # self.add_url_rule(rule, endpoint, f, **options) 44 # 通过程序实例调用添加url规则,也可以实现路由映射。 45 # app.add_url_rule(‘/123‘,‘hello2018‘,hello2018) 46 47 # 结论: 48 # 1、视图函数不能重名。 49 # 2、url可以重复,不同的http请求方法,是对应不同的操作get查询post插入put修改delete删除 50 # @app.route(‘/‘) 51 # def hello2019(): 52 # a = 1 53 # b = 2 54 # return a,b 55 # 不能返回字典 56 # my_dict = {‘a‘:‘123‘} 57 # return my_dict 58 # 不能返回列表 59 # my_list = [1,2,3] 60 # return my_list 61 # 可以返回元组 62 # return ‘hello world‘ 63 64 65 # 启动服务器 66 # __name__表示当前模块名,如果被导入文件的时候__name__表示文件名 67 if __name__ == ‘__main__‘: 68 # 查看路由映射:具体的url地址和视图函数名的指向关系。 69 print(app.url_map) 70 # debug调试模式:帮助定位错误信息,自动跟踪代码的变化 71 app.run(debug=True)
7.基本程序扩展:
视图函数不能重名
URL可以重复,因为不同的http请求方法代表不同的操作
路径的访问顺序是从上到下依次查找,如果找到不会继续往下查找
8.加载配置信息:
加载配置对象
加载配置文件ini格式文件
加载环境变量
1 from flask import Flask 2 # 导入配置类 3 # from config import Config 4 from config import config_dict 5 app = Flask(__name__) 6 # 加载配置文件:三种实现形式 7 # 1、加载配置对象,config是flask内置的配置对象 8 # 重点掌握:因为扩展性更强 9 # app.config.from_object(Config) 10 # app.config.from_object(config_dict[‘pro‘]) 11 # 2、加载配置文件 12 # app.config.from_pyfile(‘config.ini‘) 13 # 3、加载环境变量 14 # app.config.from_envvar(‘SET‘) 15 16 17 @app.route(‘/‘) 18 def index(): 19 return ‘hello world‘ 20 21 if __name__ == ‘__main__‘: 22 app.run()
config.py文件:
# 基本配置类 class Config: DEBUG = None # 开发模式配置 class DevelopmentConfig(Config): DEBUG = True # 生产模式配置 class ProductionConfig(Config): DEBUG = False # 定义字典,实现配置类的映射 config_dict = { ‘dev‘:DevelopmentConfig, ‘pro‘:ProductionConfig }
9.状态码:
return可以返回不符合http协议的状态码,用来前后端的数据交互。
10.重定向:
redirect----参数是具体的URL地址
url_for ----参数是视图函数名(端点endpoint)
# 导入flask内置的函数redirect from flask import Flask,redirect,url_for app = Flask(__name__) # 重定向redirect:接收参数为location,具体的url地址 # 重新发送网络请求,跳转页面 # 当项目路径(url)或文件发生变化的情况下,可以使用重定向。 @app.route(‘/‘) def index(): url = ‘http://www.baidu.com‘ # 重定向到百度 return redirect(url) # url_for反向解析:接收的参数endpoint,视图函数名 @app.route(‘/for‘) def demo_url_for(): return redirect(url_for(‘index‘)) if __name__ == ‘__main__‘: print(app.url_map) app.run(debug=True)
标签:数据 pytho 装饰器 elf def run方法 url var ret
原文地址:https://www.cnblogs.com/Lee1010/p/9898595.html