pycharm 查看方法的定义(类似.net 中 F12)ctrl + 单击(对应的方法)创建安装虚拟环境两种方法第二种# 先打开cmd 中断# 查看virtual是否安装过pip show virtualenv# 安装pip install virtualenvwrapper-win# workon 查看虚拟环境workon# 切换虚拟环境# workon 虚拟环境# mkvirtualenv 创建新的虚拟环境mkvirtualenv falsk2env# 删除虚拟环境# rmvirtualenv flask2env#进入虚拟环境workon flask2env# 创建的虚拟环境路径 C:\Users\用户\Envs\中pip list 查看虚拟环境所有的包pip freeze 查看自己安装的包创建Flask 项目专业版pychram社区版 要手动创建url_for》url_for 是 Flask 中的核心函数,用于反向生成 URL——根据视图函数名和参数,动态生成对应的 URL 路径。fromflaskimportFlask,render_template,jsonify app=Flask(__name__)# 路由可以多个对一个视图函数的@app.route('/')@app.route('/index/')defindex():# 返回值# 直接返回# return 'bZEN/b'# 模板渲染# return render_template('index.html',name='123')# 返回json对象# return {'name':'Ares-Wang','Sex':'男'}# 返回json序列化returnjsonify({'name':'Ares-Wang','Sex':'男'})@app.route('/')defhome():return'ARES-ZEN'if__name__=='__main__':app.run(host='0.0.0.0',debug=True)# ===============静态文件===============!--引入css样式表 相对路径, 从根目录--!--linkrel="stylesheet"href="../static/CSS/index.css"--!--linkrel="stylesheet"href="/static/CSS/index.css"----url_for 反向解析linkrel="stylesheet"href="{ {url_for('static',filename='CSS/index.css')}}"# 引用 CSSlinkrel="stylesheet"href="{ { url_for('static', filename='css/style.css') }}"# 引用 JSscriptsrc="{ { url_for('static', filename='js/main.js') }}"/script# 引用图片imgsrc="{ { url_for('static', filename='images/logo.png') }}"# 输出linkrel="stylesheet"href="/static/css/style.css"scriptsrc="/static/js/main.js"/scriptimgsrc="/static/images/logo.png"## ===============无参数路由===============#app.py@app.route('/')defindex():returnrender_template('index.html')@app.route('/about')defabout():return'关于页面'# 模板中使用ahref="{ { url_for('index') }}"首页/aahref="{ { url_for('about') }}"关于/a# 输出ahref="/"首页/aahref="/about"关于/a# ===============带参数路由===============@app.route('/user/name')defuser(name):returnf'用户:{name}' @app.route('/post/int:post_id')defpost(post_id):returnf'文章:{post_id}'# 模板中使用ahref="{ { url_for('user', name='张三') }}"张三的主页/aahref="{ { url_for('post', post_id=123) }}"文章123/a# 输出ahref="/user/%E5%BC%A0%E4%B8%89"张三的主页/a!--自动 URL 编码--ahref="/post/123"文章123/a# ===============多个参数===============@app.route('/search')defsearch():# 获取参数: request.args.get('q'),request.args.get('page')return'搜索结果'# 模板中使用ahref="{ { url_for('search', q='python', page=2) }}"搜索 Python 第2页/a# 输出ahref="/search?q=pythonpage=2"搜索 Python 第2页/a#===============多个参数============@app.route('/search')defsearch():# 获取参数: request.args.get('q'),request.args.get('page')return'搜索结果'# 模板中使用ahref="{ { url_for('search', q='python', page=2) }}"搜索 Python 第2页/a# 输出ahref="/search?q=pythonpage=2"搜索 Python 第2页/aFlask 项目拆分# flask 蓝图 常用目录结构myapp/├── app/# 包 │ ├── __init__.py # 应用工厂函数 │ ├── models.py # 数据库模型 │ ├── extensions.py # 扩展初始化 │ │ │ ├── main/# 主模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py # 路由视图 │ │ └── forms.py # 表单 │ │ │ ├── auth/# 认证模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py │ │ └── forms.py │ │ │ ├── blog/# 博客模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py │ │ └── models.py │ │ │ ├──static/# 静态文件 │ │ ├── css/│ │ ├── js/│ │ └── images/│ │ │ └── templates/# 模板文件 │ ├──base.html │ ├── main/│ ├── auth/│ └── blog/│ ├── config.py # 配置文件 ├── run.py 或 app.py # 启动入口 ├── requirements.txt └──.env # 环境变量# 写法1:显式指定 __init__frommypackage.__init__importSomeClass# 写法2:省略 __init__(推荐)frommypackageimportSomeClass//当导入一个包时,Python 会自动执行该包的 __init__.py//包本身和它的 __init__.py 在导入时被视为同一个命名空间# app.pyfromAPPimportCreate_App app=Create_App()if__name__=='__main__':app.run(host='0.0.0.0',debug=True)# views.py# views.py 路径 + 视图函数fromflaskimportBlueprintfrom.modelsimport*blue=Blueprint('BlueName',__name__)@blue.route('/')defHome():return'SPlIT'# __init__.py# __init__.py :初始化文件、创建Flask应用fromflaskimportFlaskfrom.viewsimportbluedefCreate_App():# 返回Flask对象app=Flask(__name__)# print(app.config)# SECRET_KEY 是对称加密的密钥,存在浏览器的# session['xxx']='123',session 通过secret_key 把123 加密存在服务器端# 同时客户端cookie中存入cookieID 也是加密的 session 设置要配置secret_key# app.config['SECRET_KEY']='ZEN'# 设置session过期时间# app.config['PERMANENT_SESSION_LIFEATIME']=datetime.timedelta# 注册蓝图 可以注册多个蓝图app.register_blueprint(blueprint=blue)returnapp路由参数@app.route(‘/xxx/converter:variable_name’)converter:参数类型string:接受任何没有斜杠’/'的字符串 默认参数类型int:接受整数float:接受浮点数path 接受路径, 可接受斜杠(’/‘)的字符串uuid 只能接受uuid字符串,唯一码,一种生成规则 根GUID一样的any 可以同时指定多种路径,进行限定@app.route(‘/student//’) 与 @app.route(‘/student/string:username/’) 一样@app.route(‘/student/int:id/’)def get_student(id):student= Student.query.get(id)@app.route(‘/student/uuid:id/’)@app.route(‘/student/float:num/’)@app.route(‘/student/path:path/’)@app.route(‘/student/any(‘男’,女):gender/’)请求方法常见POST GETFlask 默认支持GET,不支持POST请求的@app.route(‘/student/’)同时支持get 、post 请求@app.route(‘/student/’,methods=[‘GET’, ‘POST’])请求对象和响应对象 request responserequest服务器在接受客户端的请求后,会自动创建Request对象,有FLask框架创建,request对象不可修改# requests 爬虫测试下面的请求对象importrequests request=requests.get(
python之 flask 框架(1)
发布时间:2026/5/25 20:03:02
pycharm 查看方法的定义(类似.net 中 F12)ctrl + 单击(对应的方法)创建安装虚拟环境两种方法第二种# 先打开cmd 中断# 查看virtual是否安装过pip show virtualenv# 安装pip install virtualenvwrapper-win# workon 查看虚拟环境workon# 切换虚拟环境# workon 虚拟环境# mkvirtualenv 创建新的虚拟环境mkvirtualenv falsk2env# 删除虚拟环境# rmvirtualenv flask2env#进入虚拟环境workon flask2env# 创建的虚拟环境路径 C:\Users\用户\Envs\中pip list 查看虚拟环境所有的包pip freeze 查看自己安装的包创建Flask 项目专业版pychram社区版 要手动创建url_for》url_for 是 Flask 中的核心函数,用于反向生成 URL——根据视图函数名和参数,动态生成对应的 URL 路径。fromflaskimportFlask,render_template,jsonify app=Flask(__name__)# 路由可以多个对一个视图函数的@app.route('/')@app.route('/index/')defindex():# 返回值# 直接返回# return 'bZEN/b'# 模板渲染# return render_template('index.html',name='123')# 返回json对象# return {'name':'Ares-Wang','Sex':'男'}# 返回json序列化returnjsonify({'name':'Ares-Wang','Sex':'男'})@app.route('/')defhome():return'ARES-ZEN'if__name__=='__main__':app.run(host='0.0.0.0',debug=True)# ===============静态文件===============!--引入css样式表 相对路径, 从根目录--!--linkrel="stylesheet"href="../static/CSS/index.css"--!--linkrel="stylesheet"href="/static/CSS/index.css"----url_for 反向解析linkrel="stylesheet"href="{ {url_for('static',filename='CSS/index.css')}}"# 引用 CSSlinkrel="stylesheet"href="{ { url_for('static', filename='css/style.css') }}"# 引用 JSscriptsrc="{ { url_for('static', filename='js/main.js') }}"/script# 引用图片imgsrc="{ { url_for('static', filename='images/logo.png') }}"# 输出linkrel="stylesheet"href="/static/css/style.css"scriptsrc="/static/js/main.js"/scriptimgsrc="/static/images/logo.png"## ===============无参数路由===============#app.py@app.route('/')defindex():returnrender_template('index.html')@app.route('/about')defabout():return'关于页面'# 模板中使用ahref="{ { url_for('index') }}"首页/aahref="{ { url_for('about') }}"关于/a# 输出ahref="/"首页/aahref="/about"关于/a# ===============带参数路由===============@app.route('/user/name')defuser(name):returnf'用户:{name}' @app.route('/post/int:post_id')defpost(post_id):returnf'文章:{post_id}'# 模板中使用ahref="{ { url_for('user', name='张三') }}"张三的主页/aahref="{ { url_for('post', post_id=123) }}"文章123/a# 输出ahref="/user/%E5%BC%A0%E4%B8%89"张三的主页/a!--自动 URL 编码--ahref="/post/123"文章123/a# ===============多个参数===============@app.route('/search')defsearch():# 获取参数: request.args.get('q'),request.args.get('page')return'搜索结果'# 模板中使用ahref="{ { url_for('search', q='python', page=2) }}"搜索 Python 第2页/a# 输出ahref="/search?q=pythonpage=2"搜索 Python 第2页/a#===============多个参数============@app.route('/search')defsearch():# 获取参数: request.args.get('q'),request.args.get('page')return'搜索结果'# 模板中使用ahref="{ { url_for('search', q='python', page=2) }}"搜索 Python 第2页/a# 输出ahref="/search?q=pythonpage=2"搜索 Python 第2页/aFlask 项目拆分# flask 蓝图 常用目录结构myapp/├── app/# 包 │ ├── __init__.py # 应用工厂函数 │ ├── models.py # 数据库模型 │ ├── extensions.py # 扩展初始化 │ │ │ ├── main/# 主模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py # 路由视图 │ │ └── forms.py # 表单 │ │ │ ├── auth/# 认证模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py │ │ └── forms.py │ │ │ ├── blog/# 博客模块蓝图 │ │ ├── __init__.py │ │ ├── routes.py │ │ └── models.py │ │ │ ├──static/# 静态文件 │ │ ├── css/│ │ ├── js/│ │ └── images/│ │ │ └── templates/# 模板文件 │ ├──base.html │ ├── main/│ ├── auth/│ └── blog/│ ├── config.py # 配置文件 ├── run.py 或 app.py # 启动入口 ├── requirements.txt └──.env # 环境变量# 写法1:显式指定 __init__frommypackage.__init__importSomeClass# 写法2:省略 __init__(推荐)frommypackageimportSomeClass//当导入一个包时,Python 会自动执行该包的 __init__.py//包本身和它的 __init__.py 在导入时被视为同一个命名空间# app.pyfromAPPimportCreate_App app=Create_App()if__name__=='__main__':app.run(host='0.0.0.0',debug=True)# views.py# views.py 路径 + 视图函数fromflaskimportBlueprintfrom.modelsimport*blue=Blueprint('BlueName',__name__)@blue.route('/')defHome():return'SPlIT'# __init__.py# __init__.py :初始化文件、创建Flask应用fromflaskimportFlaskfrom.viewsimportbluedefCreate_App():# 返回Flask对象app=Flask(__name__)# print(app.config)# SECRET_KEY 是对称加密的密钥,存在浏览器的# session['xxx']='123',session 通过secret_key 把123 加密存在服务器端# 同时客户端cookie中存入cookieID 也是加密的 session 设置要配置secret_key# app.config['SECRET_KEY']='ZEN'# 设置session过期时间# app.config['PERMANENT_SESSION_LIFEATIME']=datetime.timedelta# 注册蓝图 可以注册多个蓝图app.register_blueprint(blueprint=blue)returnapp路由参数@app.route(‘/xxx/converter:variable_name’)converter:参数类型string:接受任何没有斜杠’/'的字符串 默认参数类型int:接受整数float:接受浮点数path 接受路径, 可接受斜杠(’/‘)的字符串uuid 只能接受uuid字符串,唯一码,一种生成规则 根GUID一样的any 可以同时指定多种路径,进行限定@app.route(‘/student//’) 与 @app.route(‘/student/string:username/’) 一样@app.route(‘/student/int:id/’)def get_student(id):student= Student.query.get(id)@app.route(‘/student/uuid:id/’)@app.route(‘/student/float:num/’)@app.route(‘/student/path:path/’)@app.route(‘/student/any(‘男’,女):gender/’)请求方法常见POST GETFlask 默认支持GET,不支持POST请求的@app.route(‘/student/’)同时支持get 、post 请求@app.route(‘/student/’,methods=[‘GET’, ‘POST’])请求对象和响应对象 request responserequest服务器在接受客户端的请求后,会自动创建Request对象,有FLask框架创建,request对象不可修改# requests 爬虫测试下面的请求对象importrequests request=requests.get(