(小菜鸟专属)flask+pycharm 初学与配置 (一,初始化简介)

@[TOC](flask+pycharm 初学与配置 (一,初始化简介))

Flask – 简单入门

微框架 安全性 便捷简单

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 "<a href='http://172.16.65.250:8080/files/%E4%BD%9C%E4%B8%9A/2019%E5%B9%B49%E6%9C%884%E6%97%A5/'> 班级 </a>"
# 前例把index() 函数注册为程序根地址的处理程序。
# 如果部署程序的服务器域名为www.example.com,在浏览器中访问http://www.example.com 后,会触发服务器执行index() 函数。
# 这个函数的返回值叫做响应,是客户端接收到的内容

# 启用调试模式,我们可以把debug 参数设为True。
if __name__ == '__main__':
    app.run(debug=True)

---- 摘自**《flask – 中文文档》**
同于django ,这里作者就不多介绍了。

Flask – 框架配置

相信配置项目的文件目录都已列好,为了更好的配置项目,小编建议把项目环境放到项目中,也就是venv文件目录

将venv文件在配置时放入项目目录即可

flask–基本知识点

  1. 路由
@app.route('/user/<username>')
# 上述‘/user/<username>’  此转换器默认为string类型

其他转换器类型:

此图摘自https://www.cnblogs.com/xiaxiaoxu/p/10386373.html

  1. HTTP方法
@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        pass
    else:
        pass

比起django,flask可以有多种请求:

  • GET :浏览器告诉服务器只获取页面信息发给后台
  • HEAD:浏览器告诉服务器只获取消息头,希望像GET请求一样处理不传实际内容,flask不用处理,Werkzeug库在底层已处理
  • POST:浏览器告诉服务器要修改旧内容,必须确保数据已存储并只存储一次
  • PUT:类似POST,但更新数据失败不进行第二次,只会触发一次
  • DELETE:删除给定位置的信息
  • OPTIONS:给客户端提供快捷,自动弄清URL支持哪些HTTP方法

有趣的是,在 HTML4 和 XHTML1 中,表单只能以 GET 和 POST 方法提交到服务器。 --摘自 《flask-- 中文文档》
3. 模板渲染

from flask import render_template

@app.route('/hello/')
@app.route('/hello/<name>')
def hello(name=None):
    return render_template('hello.html', name=name)
<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello World!</h1>
{% endif %}

这里用到了DTL 语言 ,
具体介绍, DTL模板语言介绍,用来实现前后端交互。

  1. flask app.run () 的上下文执行原理
  2. Cookies在Flask的应用

读取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
  1. 重定向和错误
    重定向:
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
  • 获取响应结果 make_response()
@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
  • 会话时生成一个强壮的密匙 os.urandom()
>>> import os
>>> os.urandom(24)
'\xfd{H\xe5<\x95\xf9\xe3\x96.5\xd1\x01O<!\xd5\xa2\xa0\x9fR"\xa1\xa8'
  • 消息闪现

flask–整合WSGI中间件

  • 如果你想给你的应用添加 WSGI 中间件,你可以封装内部 WSGI 应用。例如如果你想使用 Werkzeug 包中的某个中间件来应付 lighttpd 中的 bugs ,可以这样做:
from werkzeug.contrib.fixers import LighttpdCGIRootFix
app.wsgi_app = LighttpdCGIRootFix(app.wsgi_app)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值