上午
1,flask请求 django中的请求,request(形参,包含请求信息的请求对象)提供了methods,post,get,body
flask提供了一个请求对象request(请求上下文),提供了一些丰富方法:
1,获取get请求的参数 类字段的对象
2,获取post请求的参数
3,请求方式POST GET
4,获取请求的来源
5,127.0.0.1:5000
6,http://127.0.0.1:5000/
7,请求的地址
8,获取cookie
9,上传文件
1,data = request.args.get('name',13234)
2,data = request.form.get('name')
3,data = request.method
4,data = request.referrer
5,data = request.host
6,data = request.host_url
7,data = request.url
8,data = request.cookie
9,data = request.files
print(data)
当出现405错误 因为flask默认接受get请求,不接受post请求
1,获取get请求的参数 类字段的对象
2,获取post请求的参数
@app.route('/reqtest/',methods=['POST'])
def reqtest():
data = request.args.get('name',1223)
data = request.form.get('name')
print(data)
return 'reqtest'
form表单发送get和post请求
form表单发送get请求
@app.route('/reqTest/')
def reqTest():
name = request.get('pwd')
pwd = request.get(pwd)
print(name)
print(pwd)
return render_template('reqtest.html)
form表单
<form action=''>
姓名:<input type='text' name='name'>
密码:<input type='password' name='pwd'>
<input type='submit' value='提交'>
</form>
form表单发送post请求
@app.route('/reqTest,method=['POST'.'GET'])
def reqTest():
name = request.form.get('name')
pwd = request.form.get('pwd')
print(name)
print(pwd)
return render_template('reqTest.html')
<form action='' method='post'>
姓名:<input type='text' name='name'>
密码:<input type=password name=pwd
<input type='submit' value='提交'>
</form>
3,登录注册
视图
from flask import redirect
@app.route('/login/',methods=['POST','GET'])
def Login():
name = request.form.get('password')
if name and project:
user = User.query.filter(User.password==password,User==name).first()
if user:
return redirect('/courses/')
return redirect('/index')
重定向
return redirect('/index')
@app.route('/register/',methods=['POST','GET'])
def register():
if request.method=='POST':
username=request.form.get('username')
password=request.form.get('password')
if username and password:
user=User()
user.password=password
user.name=username
user.role_id=2
user.save()
return redirect('/index')
return render_template('register.html')
4,图片上传
django中 -》pillow+imagefiled+upload_to+路径(上传的路径) flask中
request.files完成图片的上传,保存 方法:
#photo=request.files.get('image')
mthod=[one for one in dir(photo) if not one.startswith('_')]
print(photo.filename) #图片的名字
print(photo.headers) #请求头部信息
print(photo.content_type) #文件类型
print(photo.mimetype) #内容类型
print(photo.mimetype_params) #类型参数
photo.save(path) #保存文件
上传保存图片到指定目录,并保存到数据库中
import os
filePath=os.path.join(STATIC_URL,filePath) #文件路径 static/img/1.jpg
#保存文件到指定到位置 /static/img
photo.save(path)
#数据库中存 文件路径 img/1.jpg
user=User.query.get(1)
user.picture=filePath
user.update()
form表单上传图片 视图
import os
@app.route('/filetest/',methods=['GET','POST'])
def filetest():
if request.method=='POST':
photo=request.files.get('photo')
print(photo)
photo.save(path) #保存到本地
user=User.query.get(1)
user.picture=photo_path
user.update()
user=User.query.get(1)
return render_template('filetest.html',**locals())
模板
<form action='' method='post' enctype='multipart/form-data'>
<input type='file' name='photo'>
<input type='submit' value='提交'>
</form>
<img src='/static/{{user.picture}}' alt=''>
{{user.picture}}
下午
会话机制 cookie
设置cookie
django给响应对象设置cookie
if user:
response=redirect('/courses/')
response.set_cookie('username,user.name')
response.set_cookie('id',str(user.id))
return response
获取cookie
从request中获取
from flask import request
username=request.cookie.get('username')
id=request.cookies.get('id')
删除cookie
@app.route('/a/')
def a():
response=redirect('/index')
response=delete_cookie('username')
response=delete_cookie('id')
return response
登录装饰器
import functools
def LoginValid(func):
@functools.wraps(func) #保留原函数的名字
def inner(*args,**kwargs):
#从cookie中取数据
username=request.cookies.get('username')
id=request.cookies.get('id')
if username and id:
user=User.filter(User.id=id,User.name==username).first()
if user:
return func(*args,**kwargs)
else:
return redirect('/login/')
else:
return redirect('/login/')
return inner
装饰器的使用
@app.route('/coures/')
@LoginValid
def courses():
page=rquest.args.get('page',1) #第几页
#if page:
#page=int(page)
#else:
#page=1
page_num=10 #每页显示多少条
label_list=Label.query.all()
本文介绍了Flask框架中的请求处理,包括GET、POST请求的参数获取、请求源和地址、Cookie处理以及文件上传。同时,文章还探讨了会话机制,如设置、获取和删除Cookie,以及登录装饰器的实现。
519

被折叠的 条评论
为什么被折叠?



