欢迎光临散文网 会员登陆 & 注册

2023版-零基础玩转Python Flask框架-学完可就业

2023-03-26 15:41 作者:嘿果汁  | 我要投稿

第五章 MYSQL数据库

5.1.2Python操作mysql的驱动

有以下四种:

  • MYSQL_python,C语言操作Mysql数据库的简单封装,只支持Python2
  • mysqlclient,执行效率高但安装容易出错
  • pymysql,用python写的
  • mysql-connector-python:mysql官方推出的纯python连接mysql的驱动,但效率比pymysql还慢

pymysql安装命令:

pip install pymysql

5.1.3 Flask-SQLAlchemy


简介

在Flask中,我们很少会使用pymysql直接写原生SQL语句操作数据库,更多的用SQLAlchemy提供的ORM 技术,类似于操作普通Python对象一样实现数据库的增删改查。Flask-SQLAlchemy是对SQLAlchemy的简单封装。

安装命令

pip install Flask-sqlalchemy

sqlalchemy官方文档:sqlalchemy.org/

5.2 Flask-SQLAlchemy基本使用


5.2.1连接MySQL

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

//创建对象,在App.config中设置好连接数据库的信息

//然后使用SQLAlchemy(app)创建db对象

//SQLAlchemy会自动读取app.config中的连接信息。

db = SQLAlchemy(app)

HOST =

app.config[''] = f'mysql+pymysql://{}:{}:@{}/'

创建数据库

先用navicat




第四章 Jinja2

pip list查看安装包

  • 模板渲染 render_template的用法
  • 传递html

创建templates文件夹

创建static文件夹

@app.route('/')

def hello():

return render_template("index.html")

  • 传递html中的变量

@app.route("/blog/<blog_id>")

def hello(blog_id):

处理语句

return render_template("index.html",blog_id = blog_id,username="zl")

在html中添加:

{{blog_id}}

{{username}}

  • 4.1模板访问对象属性
  • 类对象的访问方式

在py文件中创建User类对象

user = User(username="aa",email = "@qq.com")

return render_template("index.html",user=user);

html中

{{user.username}}/{{user.email}}

  • 字典变量的使用方法

py中定义

person={"username":"zhangsan",

“email”:“zhangsan@qq.com”}

html中访问的两种方式:

{{person["username"]}}

{{person.email}}

  • 4.2过滤器和测试器

如果需要对某个变量进行处理,可以通过函数来实现,在模板中,则是通过过滤器来实现的。过滤器的本质也是函数。但是在模板中使用的方式是通过管道符号 | 来调用的。

例如,获取name的长度,{{name|length}}

4.2.1自定义过滤器(在html中使用的)

py文件中

//定义过滤器,第一个参数是需要被处理的值,第二个参数是时间的格式,并制定了默认值。

def datetime_format(value,format="%Y-%M-%d-%m:%H:%M"):

return value.strftime(format)

//在模板中注册模板过滤器,并且把过滤器命名为dformat.

app.add_template_filter(datetime_format,"dformat")


py,app绑定的视图函数中:

import datetime

mytime = datetime.now();


html中:

{{mytime|dformat}}

另一种使用方式:

@app.template_filter("dformat")

def datetime_format(value,format="%Y-%M-%d-%m:%H:%M"):

return value.strftime(format)

4.2.2 内置过滤器

参考:Jinja过滤器官方文档

4.3控制语句


4.3.1 if语句

1、创建if_statement的视图函数

@app.route("/if")

def if_statement():

age = 18

return render_template("if.html",age = age)

在html中,判断

<body>

{% if age>18 %}

<div>您已成年</div>

{% elif age<18 %}

<div>您未成年</div>

{% else %}

<div>刚刚成年</div>

{% endif %}

</body>

逻辑最好写在后端。

4.3.2 for循环语句

py中

books=[{"name":"A","author":"B"},

{"name":"C","author":"D"},

]

html中

{% for book in books%}

<div>图书名称:{{book.name}},作者{{book.author}}</div>

{% endfor %}

for循环中没有break语句。



4.4.2 模板继承

<%extends "base.html">

{% block title%}

我是子模板的标题

{% endblock %}

block语法的实现

{% block title%}

{% endblock %}

4.4.3加载静态文件

省略了...




第三章 URL与视图

url的组成:协议://域名/路径:端口号

一般格式:

http/https://域名(www.google.com)/profile(:端口号)。

http协议用的80端口,

https协议用的443端口所以可写可不写。

一个路由对应一个函数

  • 定义有参的url:将参数固定到了path中

@app.route(''/blog/<blog_id>)

def blog_detail(blog_id):

return "%s" % blog_id

定义类型

@app.route(''/blog/<int:blog_id>)

def hello(blog_id):

...

  • 查询字符串的方式传参

/book/list?page=2:获取第二页的数据。

import request

@app.route('root/list')

def book_list():

request.args.get("page",defualt = 1,type=int);

return f"{page}"

#arguments:参数

request.args.类字典类型

request.args.get(self ,key,default,type)


第二章 项目配置

1、debug模式:

debug mode :off

开启debug模式后,可以直接看到修改后ctrl+s后的结果,不需要重启项目。

开发的时候出现bug,如果开启debug模式,在浏览器上就可以看到出错信息。

打开debug模式:

a、

Edit configurations:

勾选Flask_DEBUG

b、社区版在app.run(debug = True);

或者app.debug = true;

一个是落实到代码上,一个是修改pycharm IDE的配置,后者如果脱离了pycharm,那么运行就不能开启debug了。

2、修改host:

局域网中,让别人的电脑访问我的电脑上的flask项目,修改host为0.0.0.0,

修改方法:

Edit configurations:

Additional options: --host=0.0.0.0

3、port:修改端口号(酒店的房间号)

查看端口号:

修改端口号:

Additional options: --host=0.0.0.0 --port=8000

第一章 简单的入门程序

从Flask包中导入flask类

创建app.

app == Flask(__name__);

  • __name__:代表当前app.py模块
  • 作用以后出现bug,他可以帮助我们快速定位。
  • 对于寻找模板文件,有一个相对路径。


@app.route();#创建一个路由和视图函数的映射

执行下面紧密相联的函数

主函数: __name__ == '__main__'

2023版-零基础玩转Python Flask框架-学完可就业的评论 (共 条)

分享到微博请遵守国家法律