flask—介绍和安装,快速使用,配置文件写法()

  • web框架介绍, Flask介绍和安装介绍安装 flask简单的使用
  • 介绍
  • 安装 flask
  • 简单的使用
  • flask快速使用,展示用户信息案例
  • 配置文件写法

web框架介绍, Flask介绍和安装

Django大而全(3.x以后支持异步),flask:小而精,插件的支持

异步框架:Sanic,FastAPI

-aiomysql
-aioredis
-python异步的orm框架

介绍

Flask是一个基于Python开发并且依赖jinja2模板(DTL)和Werkzeug WSGI(符合wsgi协议的web服务器,wsgiref)服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

安装 flask

pip install flask

简单的使用

from flask import Flask

# app=Flask(__name__)
app = Flask('lqz')

@app.route('/')
def index():
    return 'hello  world'


if __name__ == '__main__':
    app.run()

flask快速使用,展示用户信息案例

需求:

  • 登录:返回给前端cookie
  • 登录成功后可以访问首页(不登录不能访问)
  • 点击首页的详情,访问详情(不登录不能访问)
from flask import Flask,request,render_template,redirect,session

app = Flask(__name__)

app.secret_key='zjj123456789zmpasdasd'
USERS={
    1:{"name":"掌上","text":'1235461'},
    2:{"name":"掌上11","text":'1235461111'},
    3:{"name":"掌上111","text":'123546111111'},
}

def outer(func_name):  # func_name用于接收被装饰的对象(函数)
    def inner(*args, **kwargs):
        if session.get('username') == 'zjj':
            res = func_name(*args, **kwargs)
            return res
        else:
            return redirect('/login')
    return inner
@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/login',methods=['get','post'])
def login():
    if request.method=='GET':
        return render_template('login.html')
    else:
        username=request.form.get('username')
        password=request.form.get('password')
        if username=='zjj' and password=='123':
            session['username']='zjj'
            return redirect('/home')
        else:
            return render_template('login.html',err='账号或密码错误')


@app.route('/home',endpoint='home')
@outer
def home():
    return render_template('home.html',user_dict=USERS)

@app.route('/detail/<int:pk>',endpoint='detail')
@outer
def detail(pk):
    user_detail=USERS.get(pk)
    return render_template('detail.html',info=user_detail)


if __name__ == '__main__':
    app.run()

新手四件套:

返回字符串  return 字符串  -----》django中HttpResponse('字符串')
        返回模板    return render_template-----》django中render(request,模板,{})
        返回重定向  return redirect('/login')-----》django中return redirect('/login')
        返回json   return jsonify(字典,列表)-----》django中JsonResponse

session的使用:

直接全局导入,使用即可 session['']=赋值

路由的分组出参数的使用:

@app.route('/detail/<int:pk>')
def detail(pk):
	pass	

render_template的使用:

 render_template(模板名字,变量=值,变量=值)
        render(request,'模板名字',context={变量:值,变量:值})

取出post提交的数据:

request.form

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="password" name="password"></p>
    <input type="submit" value="提交">{{err}}
</form>

</body>
</html>

home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>用户列表</h1>
    <table>
        {% for k,v in user_dict.items() %}
        <tr>
            <td>{{k}}</td>
            <td>{{v.name}}</td>
            <td>{{v['name']}}</td>
            <td>{{v.get('name')}}</td>
            <td><a href="/detail/{{k}}">查看详细</a></td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
   <h1>详细信息 {{info.name}}</h1>
    <div>
        {{info.text}}
    </div>
</body>
</html>

配置文件写法

django 配置文件 settings.py 全大写的是它的配置文件

flask配置文件写法很多种

第一种写法

app.secret_key='asfasdf'
app.debug=True

第二种:app所有的配置项都在app.config这个字典中

app.config['DEBUG']=True
print(app.config)

第三种:仿django的settings.py 写法

app.config.from_pyfile('settings.py')
print(app.config['NAME'])

第四种:通过类的方式

app.config.from_object('settings.DevelopmentConfig')
print(app.config)

其他

app.config.from_envvar("环境变量名称")
app.config.from_json("json文件名称")
————————
  • web框架介绍, Flask介绍和安装介绍安装 flask简单的使用
  • 介绍
  • 安装 flask
  • 简单的使用
  • flask快速使用,展示用户信息案例
  • 配置文件写法

web框架介绍, Flask介绍和安装

Django大而全(3.x以后支持异步),flask:小而精,插件的支持

异步框架:Sanic,FastAPI

-aiomysql
-aioredis
-python异步的orm框架

介绍

Flask是一个基于Python开发并且依赖jinja2模板(DTL)和Werkzeug WSGI(符合wsgi协议的web服务器,wsgiref)服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。

安装 flask

pip install flask

简单的使用

from flask import Flask

# app=Flask(__name__)
app = Flask('lqz')

@app.route('/')
def index():
    return 'hello  world'


if __name__ == '__main__':
    app.run()

flask快速使用,展示用户信息案例

需求:

  • 登录:返回给前端cookie
  • 登录成功后可以访问首页(不登录不能访问)
  • 点击首页的详情,访问详情(不登录不能访问)
from flask import Flask,request,render_template,redirect,session

app = Flask(__name__)

app.secret_key='zjj123456789zmpasdasd'
USERS={
    1:{"name":"掌上","text":'1235461'},
    2:{"name":"掌上11","text":'1235461111'},
    3:{"name":"掌上111","text":'123546111111'},
}

def outer(func_name):  # func_name用于接收被装饰的对象(函数)
    def inner(*args, **kwargs):
        if session.get('username') == 'zjj':
            res = func_name(*args, **kwargs)
            return res
        else:
            return redirect('/login')
    return inner
@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route('/login',methods=['get','post'])
def login():
    if request.method=='GET':
        return render_template('login.html')
    else:
        username=request.form.get('username')
        password=request.form.get('password')
        if username=='zjj' and password=='123':
            session['username']='zjj'
            return redirect('/home')
        else:
            return render_template('login.html',err='账号或密码错误')


@app.route('/home',endpoint='home')
@outer
def home():
    return render_template('home.html',user_dict=USERS)

@app.route('/detail/<int:pk>',endpoint='detail')
@outer
def detail(pk):
    user_detail=USERS.get(pk)
    return render_template('detail.html',info=user_detail)


if __name__ == '__main__':
    app.run()

新手四件套:

返回字符串  return 字符串  -----》django中HttpResponse('字符串')
        返回模板    return render_template-----》django中render(request,模板,{})
        返回重定向  return redirect('/login')-----》django中return redirect('/login')
        返回json   return jsonify(字典,列表)-----》django中JsonResponse

session的使用:

直接全局导入,使用即可 session['']=赋值

路由的分组出参数的使用:

@app.route('/detail/<int:pk>')
def detail(pk):
	pass	

render_template的使用:

 render_template(模板名字,变量=值,变量=值)
        render(request,'模板名字',context={变量:值,变量:值})

取出post提交的数据:

request.form

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post">
    <p>用户名:<input type="text" name="username"></p>
    <p>密码:<input type="password" name="password"></p>
    <input type="submit" value="提交">{{err}}
</form>

</body>
</html>

home.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h1>用户列表</h1>
    <table>
        {% for k,v in user_dict.items() %}
        <tr>
            <td>{{k}}</td>
            <td>{{v.name}}</td>
            <td>{{v['name']}}</td>
            <td>{{v.get('name')}}</td>
            <td><a href="/detail/{{k}}">查看详细</a></td>
        </tr>
        {% endfor %}
    </table>
</body>
</html>

detail.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
   <h1>详细信息 {{info.name}}</h1>
    <div>
        {{info.text}}
    </div>
</body>
</html>

配置文件写法

django 配置文件 settings.py 全大写的是它的配置文件

flask配置文件写法很多种

第一种写法

app.secret_key='asfasdf'
app.debug=True

第二种:app所有的配置项都在app.config这个字典中

app.config['DEBUG']=True
print(app.config)

第三种:仿django的settings.py 写法

app.config.from_pyfile('settings.py')
print(app.config['NAME'])

第四种:通过类的方式

app.config.from_object('settings.DevelopmentConfig')
print(app.config)

其他

app.config.from_envvar("环境变量名称")
app.config.from_json("json文件名称")