@[TOC](flask+pycharm 初学与配置 (一,初始化简介))
微框架 安全性 便捷简单
from flask import Flask,jsonify,request
from functools import wraps
# Flask类的构造函数只有一个必须指定的参数,即程序主模块或则包的名称。。
# 在大多数程序中,Python 的__name__ 变量就是所需的值。
# 将构造函数的name 参数传给Flask 程序,这一点可能会让Flask 开发新手心生迷惑。
# Flask 用这个参数决定程序的根目录,以便稍后能够找到相对于程序根目录的资源文件位置。
app = Flask(__name__)
# 客户端把请求转发给Web服务器,Web服务器再把请求发送给Flask程序实例。
# 程序实例需要知道对于每个URL请求,运行哪些代码,所以保存一个URL请求到Python函数的映射关系。
# 处理URL和函数映射关系的程序称为路由。
# app.route 修饰器,把修饰的函数注册为路由
# 路由中的动态部分默认使用字符串,不过也可使用类型定义。
# 例如,路由/user/只会匹配动态片段id 为整数的URL。
# Flask 支持在路由中使用int、float 和path 类型。path 类型也是字符串,
# 但不把斜线视作分隔符,而将其当作动态片段的一部分。
# Flask 使用app.route 修饰器或者非修饰器形式的app.add_url_rule() 生成映射。
@app.route('/')
def index():
# 问题:如何通过过滤器写链接
return " 班级 "
# 前例把index() 函数注册为程序根地址的处理程序。
# 如果部署程序的服务器域名为www.example.com,在浏览器中访问http://www.example.com 后,会触发服务器执行index() 函数。
# 这个函数的返回值叫做响应,是客户端接收到的内容
# 启用调试模式,我们可以把debug 参数设为True。
if __name__ == '__main__':
app.run(debug=True)
---- 摘自**《flask – 中文文档》**
同于django ,这里作者就不多介绍了。
相信配置项目的文件目录都已列好,为了更好的配置项目,小编建议把项目环境放到项目中,也就是venv文件目录
@app.route('/user/')
# 上述‘/user/’ 此转换器默认为string类型
其他转换器类型:
此图摘自https://www.cnblogs.com/xiaxiaoxu/p/10386373.html
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
pass
else:
pass
比起django,flask可以有多种请求:
有趣的是,在 HTML4 和 XHTML1 中,表单只能以 GET 和 POST 方法提交到服务器。 --摘自 《flask-- 中文文档》
3. 模板渲染
from flask import render_template
@app.route('/hello/')
@app.route('/hello/')
def hello(name=None):
return render_template('hello.html', name=name)
Hello from Flask
{% if name %}
Hello {{ name }}!
{% else %}
Hello World!
{% endif %}
这里用到了DTL 语言 ,
具体介绍, DTL模板语言介绍,用来实现前后端交互。
读取cookies
from flask import request
@app.route('/')
def index():
username = request.cookies.get('username')
# use cookies.get(key) instead of cookies[key] to not get a
# KeyError if the cookie is missing.
存储 cookies
from flask import make_response
@app.route('/')
def index():
resp = make_response(render_template(...))
resp.set_cookie('username', 'the username')
return resp
from flask import abort, redirect, url_for
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
this_is_never_executed()
错误:
from flask import render_template
@app.errorhandler(404)
def page_not_found(error):
return render_template('page_not_found.html'), 404
@app.errorhandler(404)
def not_found(error):
return render_template('error.html'), 404
应用make_response()
@app.errorhandler(404)
def not_found(error):
resp = make_response(render_template('error.html'), 404)
resp.headers['X-Something'] = 'A value'
return resp
>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O
from werkzeug.contrib.fixers import LighttpdCGIRootFix
app.wsgi_app = LighttpdCGIRootFix(app.wsgi_app)