初步了解flask框架

首先进入虚拟环境,pip install flask

  1. 引包、创建route实例

from flask import Flask
app = Flask(__name__)
  1. 接收路径变量

@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
  1. 接收表单数据

@app.route('/hello/<name>',methods=['Post','Get'])
def getname(name):
    if request.methods=="post":
        data=request.form
    return "Hello, %s" % name
  1. 模板

在这里插入图片描述

需要把文件放在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()

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weighless1129

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值