首先进入虚拟环境,pip install flask
from flask import Flask
app = Flask(__name__)
@app.route('/hello/<name>')
def getname(name):
return "Hello, %s" % name
#接收类型数据
@app.route('/num/<int:id>')
def getnum(id):
return "you id is %d" % id
@app.route('/hello/<name>',methods=['Post','Get'])
def getname(name):
if request.methods=="post":
data=request.form
return "Hello, %s" % name
需要把文件放在templates文件夹下面,同时该文件夹需要和py文件保持同级关系
@app.route('/get')
def home():
return render_template("hello.html")
_模板的参数传递:
@app.route('/get')
def home():
data="我是自模板的数据"
dictional={'name':'张山','age':33}
return render_template("hello.html",data=data,dictional=dictional)#<<-------注意这里的传参方式,需要先接收一下,否则会在前端会找不到该数据
在页面接收数据
{{data}}
字典中的name:{{dictional['name']}}
字典中的age:{{dictional['age']}}
重定向(引入包redirect,url_for
)
@app.route('/name/<name>')
def home(name):
if name=='abc':
return redirect(url_for("get_name1"))
else:
return redirect(url_for("get_name2",name2=name))
return
@app.route('/name1')
def get_name1():
name='张三'
return render_template("hello.html",name=name)
@app.route('/name2/<name2>')
def get_name2(name2):
return render_template("hello.html",name=name2)
###不处理请求,响应 错误
cookies和对话
#设置cookies
@app.route('/setCookies')
def set_cookies():
res=make_response("success")
res.set_cookie("aaa_key","aaa_value",max_age=3600)
return res
#获得cookies
@app.route('/getCookies')
def get_cookies():
cookie1= request.cookies.get("aaa_key")
if cookie1==None:
return "None"
return cookie1
#删除cookies
@app.route('/delCookies')
def del_cookies():
res=make_response("dle success")
res.delete_cookie("aaa_key")
return res
session
#设置session
session['name']=..........
#直接用if语句进行判断session中的值
#注销session
session.pop('name',none)
#None:这是 pop 方法的第二个参数,表示如果 'name' 键不存在于 session 中,方法将返回 None。这防止了在键不存在时抛出 KeyError
文件上传
from flask import Flask, request, render_template, redirect, url_for
from werkzeug.utils import secure_filename
import os
app = Flask(__name__)
# 设置文件上传的目标文件夹
app.config['UPLOAD_FOLDER'] = 'userfiles'
# 限制文件大小为16MB
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024
@app.route('/')
def index():
# 渲染上传表单的HTML页面
return render_template('upload.html')
@app.route('/upload', methods=['POST'])
def upload_file():
# 检查是否有文件在上传请求中
if 'file' not in request.files:
return redirect(request.url)
file = request.files['file']
# 检查是否选择了文件
if file.filename == '':
return redirect(request.url)
# 如果文件存在,处理上传
if file:
# 使用secure_filename安全地获取文件名
filename = secure_filename(file.filename)
# 保存文件到指定的上传文件夹
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
return 'File uploaded successfully'
# 启动Flask应用
if __name__ == '__main__':
app.run(debug=True)
flask和数据库
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
#使用的数据库和保存位置
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db'
#数据库对象
db = SQLAlchemy(app)
# 定义模型类
class User(db.Model):
#db.Column 表示这是一个数据库表格中的列
id = db.Column(db.Integer, primary_key=True)
#unique=True——唯一、nullable=False——不能为空
username = db.Column(db.String(80), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
#根据模型类创建表格
db.create_all()
# 插入数据
user1 = User(username='user1', email='user1@example.com')
db.session.add(user1)
db.session.commit()
# 查询数据
users = User.query.all()
for user in users:
print(user.username, user.email)
# 更新数据
user1.username = 'new_user1'
db.session.commit()
# 删除数据
db.session.delete(user1)
db.session.commit()