flask入门

安装包:pip install flask

一、认识flask

1、在pycharm新建工程myflask
2、在myflask工程下面创建myapp文件夹和文件myfirstapp.py
3、在myaap文件下的__init__.py文件输入如下代码

from flask import Flask
#创建app应用,__name__是python预定义变量,被设置为使用本模块.
app = Flask(__name__)
#这里的引用会在第四步创建
from myapp import routes

4、在myapp文件下新建routes.py并输入如下代码

from myapp import app
from flask import render_template

#建立路由,通过路由可以执行其覆盖的方法,可以多个路由指向同一个方法。
@app.route('/')
@app.route('/index')
def index():
    user = {'username': 'duke'}
    posts = [
        {
            'author': {'username': '张三'},
            'body': '今天天气真好'

        },
        {
            'author': {'username': '李四'},
            'body': '是的'
        }
    ]
    # 将需要展示的数据传递给模板进行显示
    return render_template('index.html', title='我的', user=user,posts=posts)

5、在app文件下新建templates文件夹,第四步使用的html是从该文件夹获取的

新建base.html

<!DOCTYPE html>
<html >
<head>
    <meta charset="UTF-8">
     {% if title %}
        <title>{{ title }} - 博客</title>
        {% else %}
        <title>欢迎来到博客!</title>
        {% endif %}
    </head>
    <body>
       <div>博客 : <a href="/index">首页</a></div>
        {% block content %}

        {% endblock %}
    </body>
</html>

新建index.html

{% extends 'base.html' %}

     {% block content %}

       <h1>你好呀, {{ user.username }} !</h1>

        {% for post in posts %}
            <div><p>{{ post.author.username }} 说:<b>{{ post.body }}</b></p></div>
        {% endfor %}


     {% endblock %}

6、在myflask工程下面的myfirstflask.py输入如下代码

from myapp import app

#防止被引用后执行,只有在当前模块中才可以使用
if __name__=='__main__':
    app.run()

7、运行步骤6的代码,这样一个简单的app就运行起来了

或者在命令窗口运行:python myfirstflask.py

 

二、跨域和蓝图

jsonify在dumps函数(dict转换为str)上做了封装,变得更易用;
from flask import request, jsonify
from flask_cors import *
from common import server, logging
from common.common_api import common

# 允许跨域
CORS(app=server, supports_credentials=True)
# 注册蓝图
server.register_blueprint(common)


@server.route('/user/login/', methods=['post'])
def login():
    rq = request.get_json(force=True)
    logging.info(f"flask服务,请求参数是:{rq}")

    if request.method == 'POST':
        data = request.get_json()
        if data.get('username') == 'whitewall' and data.get('password') == '123456':
            return jsonify({'token': '你敢相信这是一个token?', 'msg': '登录成功'})
        else:
            return jsonify({'msg': '账号密码错误'})


if __name__ == '__main__':
    server.run(host="0.0.0.0", port=3333, debug=True)
common_api.py文件
from flask import request, Blueprint, jsonify

common = Blueprint("这里只是个描述", __name__)


@common.route('/test', methods=['post'])
def test():
    '''blueprint测试'''
    rq = request.get_json(force=True)
    return jsonify({'msg': '账号密码错误'})
posted @ 2021-01-17 18:16  whitewall  阅读(115)  评论(0)    收藏  举报