1web框架介绍, 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()
2 flask快速使用,展示用户信息案例
# 混合
# 1 登录 ---》返回给前端cookie
# 2 登录成功后可以访问首页(不登录不能访问)
# 3 点击首页的详情,访问详情(不登录不能访问)
from flask import Flask, request, render_template, session, redirect,jsonify
app = Flask(__name__)
app.secret_key = 'asdfasdfae4342@@4353' # 如果要使用session,必须写秘钥
USERS = {
1: {'name': '张三', 'age': 18, 'gender': '男', 'text': "道路千万条"},
2: {'name': '李四', 'age': 28, 'gender': '男', 'text': "安全第一条"},
3: {'name': '王五', 'age': 18, 'gender': '女', 'text': "行车不规范"},
}
@app.route('/login', methods=['GET', 'POST'])
def index():
# 判断请求是get还是post,如果是get请求,返回一个页面
if request.method == 'GET':
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
if username == 'lqz' and password == '123':
# 向浏览器中写入cookie,使用session,跳转到首页
session['username'] = 'lqz' # 写入session,到底写哪了?
return redirect('/home')
else:
return render_template('login.html', err='用户名或密码错误')
@app.route('/home')
def home():
if session.get('username') == 'lqz':
return render_template('home.html', user_dict=USERS)
else:
return redirect('/login')
@app.route('/detail/<int:pk>')
def detail(pk):
if session.get('username') == 'lqz':
return render_template('detail.html', info=USERS.get(pk))
else:
return redirect('/login')
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):
-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>
3 配置文件写法
# 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文件名称")
标签:__,return,name,render,flask,app,开端,session
From: https://www.cnblogs.com/zhengkaijian/p/16585353.html