flask框架基础

flask路由


在 Flask 中,路由是一种机制,用于将浏览器请求映射到相应的处理函数。(可以理解为网站的路径)

# 创建一个路由和视图函数的映射
# 根路由
@app.route('/')
使用render_template库渲染html模板
from flask import Flask,render_template
#render_template就是渲染模板的库
app=Flask(__name__)
@app.route('/')
def hello_word():
     return render_template('index.html')

if __name__=='__main__':
    app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>知了传课首页</title>
</head>
<body>
<h1>demo flask</h1>
</body>
</html>

结果显示

访问成员变量

from flask import Flask,render_template
#render_template就是渲染模板的库
app=Flask(__name__)
@app.route('/')
def hello_word():
     return render_template('index.html')

@app.route('/blog/<blog_id>')
def blog_detail(blog_id):
    return render_template("blog_detail.html",blog_id=blog_id,username="知了")


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

html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>博客详情</title>
</head>
<body>
<p>您的用户名是{{username}}</p>
<h1>您访问的博客详情是:{{ blog_id}}</h1>

</body>
</html>

结果展示

过滤器的使用

@app.route('/filter')
def filter_demo():
    user=User(username="知了",email="zhiliao@qq.com")
    return render_template("filter.html",user=user)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>过滤器使用</title>
</head>
<body>
{{user.username}}->{{user.username|length}}
</body>
</html>

程序控制语句--if控制语句

def control_statement():
    age=17
    return render_template("control.html",age=age)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{% if age>18 %}
  <div>您已满十八岁,可以进入网吧</div>
{% elif age==18  %}
    <div>您刚满十八岁,需要在父母的陪同下可以进入网吧</div>
{% else %}
    <div>您未满十八岁,不可以进入网吧</div>
{% endif %}
</body>
</html>

结果展示

程序控制语句--for控制语句

{% for p in people %}
<div>用户信息:{{p.name}},用户年龄:{{p.age}}</div>
{% endfor %}
@app.route('/control')
def control_statement():
    age=17
    people=[{
        "name":"张三",
        "age": 18 },{
        "name":"李四",
        "age":19
    }]
    return render_template("control.html",age=age,people=people)

结果展示

此处循环不可以使用break语句

模板继承

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
这是父模板的文字
{% block body %}
{% endblock %}
</body>
<hml>

子模板代码

{% extends "base.html" %}

{% block title %}
我是child2
{% endblock  %}

{% block body %}
我是child2
{% endblock  %}

结果展示

在实际案例的过程中,我们需要满足部分继承元素的要求如导航栏,底部文字显示等需要继承但是,中间的内容需要自己定义,为此,我们可以采用如下办法

{% extends "base.html" %}

{% block title %}
我是child2
{% endblock  %}

{% block body %}
我是child2
{% endblock  %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
<ul>
    <li><a href="#">首页</a></li>
    <li><a href="#">新闻</a></li>

</ul>
{% block body %}
{% endblock %}
<footer>这是底部标签</footer>
</body>
</html

结果展示

静态文件的加载

静态文件就是一些图片文件,css文件等等

flask的静态文件一般放在static的文件夹的目录下

static.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<img src="{{ url_for('static',filename='imgs/demo1.jpg') }}" alt="">

</body>
</html>
@app.route('/static')
def static_demo():
    return  render_template("static.html")

结果展示

加载css文件

源码展示

bdoy{
    background-color:pink;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{{url_for('static', filename='css/style.css')}}">
</head>
<body>
<img src="{{ url_for('static',filename='imgs/demo1.jpg') }}" alt="">

</body>
</html>
@app.route('/static')
def static_demo():
    return  render_template("static.html")

结果展示,网页背景改为粉色

加载js代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="{{url_for('static', filename='css/style.css')}}">
    <script src="{{url_for('static', filename='js/my.js')}}"></script>
</head>
<body>
<img src="{{ url_for('static',filename='imgs/demo1.jpg') }}" alt="">

</body>
</html>

flask框接数据库基础操作
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import  text
import requests

app = Flask(__name__)

HOSTNAME="127.0.0.1"
PORT=3306
USERNAME="root"
PASSWORD="lyzdsr203820"
DATABASE="databse_learn"

app.config['SQLALCHEMY_DATABASE_URI']=f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}"

db=SQLAlchemy(app)
with app.app_context():
    with db.engine.connect() as conn:
        rs=conn.execute(text("select 1"))
        print(rs.fetchone())

@app.route('/')
def hello_world():
    return "hellword"
if __name__ == '__main__':
    app.run()

这段代码是一个使用 Flask 和 SQLAlchemy 的简单示例,它包括了设置数据库连接和定义一个简单的路由。

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import text
import requests

这些代码部分导入了 Flask、SQLAlchemy、SQLAlchemy 中的 text 函数以及 requests 模块。

app = Flask(__name__)

这行代码创建了一个 Flask 应用对象。

HOSTNAME = "127.0.0.1"
PORT = 3306
USERNAME = "root"
PASSWORD = "lyzdsr203820"
DATABASE = "database_learn"

这些代码定义了数据库的连接信息。

app.config['SQLALCHEMY_DATABASE_URI'] = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}"

这行代码配置了 Flask 应用的数据库连接地址,使用了 MySQL 数据库连接字符串,并将之前定义的连接信息填入。

Codedb = SQLAlchemy(app)

这行代码创建了一个 SQLAlchemy 对象,用于访问数据库。

with app.app_context():
    with db.engine.connect() as conn:
        rs = conn.execute(text("select 1"))
        print(rs.fetchone())

这部分代码在应用上下文中,利用 SQLAlchemy 创建的数据库引擎对象建立数据库连接,并执行了一个简单的查询语句,输出查询结果中的第一行。

@app.route('/')
def hello_world():
    return "hello world"

这部分代码定义了一个简单的路由。当访问根路径 / 时,会执行 hello_world 函数并返回字符串 "hello world"。

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

这行代码判断当前文件是否作为主程序运行,如果是,则调用 app.run() 启动 Flask 应用。

这段代码的作用是创建一个 Flask 应用,配置数据库连接信息,并在应用上下文中执行一个简单的查询语句。然后定义了一个根路径路由,最后启动了 Flask 应用。

结果返回

证明我们使用flask连接数据库成功

使用flask创建一个表格

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import  text
import requests

app = Flask(__name__)

HOSTNAME="127.0.0.1"
PORT=3306
USERNAME="root"
PASSWORD="lyzdsr203820"
DATABASE="databse_learn"

app.config['SQLALCHEMY_DATABASE_URI']=f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOSTNAME}:{PORT}/{DATABASE}"

db=SQLAlchemy(app)
# with app.app_context():
#     with db.engine.connect() as conn:
#         rs=conn.execute(text("select 1"))
#         print(rs.fetchone())

class User(db.Model):
    __tablename__="user"
    id=db.Column(db.Integer,primary_key=True,autoincrement=True)
    username=db.Column(db.String(100),nullable=False)
    password=db.Column(db.String(100),nullable=False)
user= User(username='zhangsan',password='123456')
with app.app_context():
    db.create_all()

@app.route('/')
def hello_world():
    return "hellword"
if __name__ == '__main__':
    app.run(debug=True)

结果展示

执行代码后创建user表

数据添加

def add_user():
    user=User(username="zhangsan",password="666")
    db.session.add(user)
    db.session.commit()
    return "用户创建成功"

结果显示

页面回显

数据库展示

数据添加成功

数据查找

def query_user():
    #get查找
    user=User.query.get(1)
    print(f"{user.id}:{user.username}-{user.password}")#缺点:只能返回一条数据
    #filter_by查找
    users=user.query.filter_by(username="zhangsan")
    for user in users:
        print(user.username)
    return "数据查找成功"

结果展示

数据更新

# 数据更新
@app.route("/user/update")
def update_user():
    user=User.query.filter_by(username="zhangsan").first()
    user.password="88888888"
    db.session.commit()
    return "数据修改成功"

结果展示

修改前

修改后

数据删除

@app.route('/user/delete')
def delete_user():
    #查找
    user=User.query.get(1)
    #将数据从db.session中删除
    db.session.delete(user)
    #同步数据库
    db.session.commit()
    return "数据删除成功"

结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值