首页 > 其他分享 >2024年10月21日 flask 的基础使用

2024年10月21日 flask 的基础使用

时间:2024-10-21 16:02:07浏览次数:1  
标签:__ 10 21 flask app db add name

flask 的安装使用 

  1. 基础代码 

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():  # put application's code here
    return '正式开始'


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

 2.  url 传递参数

@app.route('/book/list')
def book_list():
  # arguments;参数
  # request.args;美字典类型
  page = request.args.get("page", default=1, type=int)
  return f"您获取的是第{page}的图书列表!“

    3.前台传递参数方式 

www.baidu.com/book/list?page=5

 

模板渲染

  1. 返回 html 页面

@app.route('/')
def hello_world():
return render_template('index.html')

 

过滤器

过滤器的使用方式为:变量名 | 过滤器。
{{ "hello world" | reverse | upper }}   // 使用 

// 自定义过滤器
# 方法一:通过注册的方式定义过滤器
# add_template_filter的底层函数 self.jinja_env.filters[name or f.__name__] = f
#  add_template_filter参数可以理解为:通过自定义过滤器名字my_lireverse找到过滤器的引用do_listreverse,然后通过引用启动过滤器
def do_listreverse(li):
    temp_li = list(li)
    temp_li.reverse()
    return temp_li
app.add_template_filter(do_listreverse,"my_lireverse01")

// 调用
{{ "123456789"|my_lireverse01 }}<br/>

 

控制语句

<!doctype html>
<title>Hello from Flask</title>
{% if name %}
  <h1>Hello {{ name }}!</h1>
{% else %}
  <h1>Hello, World!</h1>
{% endif %}

  

模板继承

{% extends "index.html" %}  // 继承语法
{% block foot %}   // 标签使用
  子模板内容
{% endblock %}

 

加载静态文件

<link href = "{{ url_for('static', filename='about.css') }}">

 

数据库

   1. 安装插件

flask-sqlalchemy
flask-migrate

 

    2. 数据库连接

pymysql   // 安装插件


连接 sql
HOSTNAME="127.0.0.1"
PORT=*****
USERNAME="******"
PASSWORD="******"
DATABASE = '*****'
app.config['SQLALCHEMY_DATABASE_URI']=f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}?charset=utf8mb4"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True

// 连接 sqlite
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///example.db' # 使用 SQLite 数据库
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)


  3. 数据迁移

		flask db init	创建迁移文件夹migrates,只调用一次
		flask db migrate	生成迁移文件
		flask db upgrade	执行迁移文件中的升级
		flask db downgrade	执行迁移文件中的降级

 

模型

  1.创建一个表

 

from flask import Flask, render_template, request, redirect
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
app = Flask(__name__)

class User(db.Model):    // 创建一个表 
  __tablename__ = 'user'
  id = db.Column(db.Integer, primary_key=True)  // 字段 
  name = db.Column(db.String(80), unique=True)
  email = db.Column(db.String(80), unique=True)

 

  2 . 添加数据 

@app.route('/user/add')
def user_add():
	user1=User(username:"张三", password:"111111'
	user2=User(username:"李", password:"222222")
	db.session.add(user1)
	db.session.add(user2)
	db.session.commit()
	return "用户添加成功!"

  3. 数据查询

@app.route('/user/get')
def user_add():
	#1.get查找:根据主键查找
	#user =User.query.get(1)
	
	#2.filter_by查找
	users = User.query.filter_by(username="法外狂徒张三")
	return "数据查找成功!"

  

 

 

 

  

 

标签:__,10,21,flask,app,db,add,name
From: https://www.cnblogs.com/longly1111/p/18488897

相关文章

  • 2024.10.21 test
    B求长度\(\gek\)的区间去掉前\(k\)大剩下权值和的最大值。\(n\le1e5,k\le100\)。一个比较暴力的办法就是维护出每个区间的答案,考虑一个位置什么时候被扣掉。首先计算出左边前\(k\)个与右边前\(k\)个比\(a_i\)大的位置,然后考虑匹配,形成的区间里都减去\(a_i\)。然......
  • Vue学习之路10----生命周期
    (以下图片来自官网)<template><div>{{num}}</div><button@click="num++">add</button></template><scriptsetupname="App">import{ref,onBeforeMount,onMounted,onBeforeUpdate,onUpdated,onBefore......
  • 2024.10.21 杂题
    2024.10.21杂题P11217【MX-S4-T1】「yyOIR2」youyou的垃圾桶\(O(n\logn)\)线段树二分不会,想写\(O(q\log^2n)\)的二分,但是htdlz说常数大可能过不去。所以我选择写树状数组实现的\(O(q\log^2n)\)做法然后跑的飞快比线段树二分还快直接过了(doge)记录前缀和\(s[i......
  • 物理学基础精解【108】
    文章目录导数应用函数的最值函数的最值的定义函数的最值的性质函数的最值的原理与推导数学公式计算例子命题曲线的拐点曲线的拐点的定义曲线的拐点的性质曲线的拐点的原理与推导数学公式计算例子命题导数描述曲线图形1.确定函数2.选择坐标轴和比例3.找出关键点4.描......
  • Delphi10.3里Memo1的查找功能
    添加一个ActionList1,添加StandardAction里的Search里的Search里的SearchFind 添加一个FindDialog1到界面上 假设Memo1的PopupMenu为PopupMenu1 在里的一个新建空白菜单设置为SearchFind1Memo1的HideSelection一定要设为False  ......
  • 20241021比赛总结
    T1岛屿https://www.gxyzoj.com/d/hzoj/p/4177显然每个点只增加了一条边,最终每个点的度数都为2,所以最终必然是很多个环,连边的过程中,也必然是一些链和一些环由题,蓝同色链的个数和红同色链的个数相等,所以设\(f(a,b)\)为a条红同色链,b条异色链的期望考虑先处理异色链:红红连红蓝为......
  • CH9121_MQTT应用
    参考代码程序下载:https://files.cnblogs.com/files/blogs/808422/EXAM_mqtt_912x.zip?t=1729489963&download=true前言:(1)很多物联网\嵌入式应用需要将采集的数据上传到MQTT服务器以实现集中实时管理。然而可能前期选型时并未考虑到这一点导致选用的MCU没有网络功能无法实现。并且......
  • 常用的10款文件加密软件分享|2024办公文件怎么加密?赶快码住!
    在2024年,数据泄露和信息被盗的风险日益增加,因此,文件加密成为了保护敏感信息的重要手段。本文将介绍10款常用的文件加密软件,帮助您在办公中确保文件的安全。1.Ping32Ping32是一款专为企业和个人设计的文件加密软件,具备多层次的安全防护机制。它支持AES-256加密算法,并提供文......
  • 【进阶OpenCV】 (21) --卷积神经网络实现人脸检测
    文章目录卷积神经网络实现人脸检测一、加载CNN人脸检测模型二、图像预处理三、绘制人脸矩形框总结卷积神经网络实现人脸检测opencv可以直接通过readnet来读取神经网络。dlib也可以的。任务:使用dlib库中的卷积神经网络(CNN)人脸检测模型来检测一张图片中的人脸,并使用O......
  • ChatGPT-4国内中文版镜像网站整理合集(2024/10/21)
    ​绝对好用的收集ChatGPT镜像网站的开源项目镜像站收集开源项目chatgpt-mirror-site 收集各种可以的ChatGPT镜像网站,免费的收费的。支持4o以及o1,支持MJ绘画一、GPT中文镜像站1.什么是镜像站镜像站(MirrorSite)是指通过复制原始网站内容和结构,创建的备用网站。其主要目的是在......