文章目录

  • postman工具
  • get和post
  • 如何给路由传参 解析
  • @app.route('')这个叫视图函数
  • Jinja2模板引擎
  • 动态传参
  • 注释、变量代码块以及控制代码块的使用
  • 注释:ctrl+/
  • 变量代码块使用
  • 控制代码块的使用 if for等(for循环)
  • 过滤器的使用(比如小写转大写,获取第几个字符之类的)
  • web表单及验证
  • flash消息闪现,给模板传递消息,消息加密(做混淆用)
  • 表单样式的显示(使用flask_wtf模板创建表单)
  • 模板表单的验证 csrf_token
  • Flask中使用SQL数据库 SQLAlchemy(flask_sqlalchemy)(如果是使用mysql数据库,安装flask_mysqldb)
  • mysql数据模型的定义 常用SQLAlchemy字段类型/列选项/关系选项
  • 数据库基本操作,增删改 db.session

Python-flask视频网站搭建

用flask-做一个资源网站(part1)-项目

黑马程序员-6节课入门Flask框架web开发视频


查看虚拟环境

Microsoft Windows [版本 10.0.18363.1256]
(c) 2019 Microsoft Corporation。保留所有权利。C:\Users\Dontla>virtualenv --version
virtualenv 20.3.1 from d:\20191031_tensorflow_yolov3\python\lib\site-packages\virtualenv\__init__.pyC:\Users\Dontla>



postman工具

https://www.postman.com/

get和post


如何给路由传参 解析

@app.route(’’)这个叫视图函数

Jinja2模板引擎

动态传参

flask_template_demo.py

# -*- coding: utf-8 -*-
"""
@File    : flask_template_demo.py
@Time    : 2021/1/26 16:41
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def hello_world():url_str = 'www.baidu.com'return render_template('index.html', url_str=url_str)if __name__ == '__main__':app.run()

index.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>FLASK TEST</title>
</head>
<body>这是模板<br>这是首页<br>{{url_str}} <br>
</body>
</html>

注释、变量代码块以及控制代码块的使用

注释:ctrl+/

<!---->

变量代码块使用

# -*- coding: utf-8 -*-
"""
@File    : flask_template_demo.py
@Time    : 2021/1/26 16:41
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def hello_world():url_str = 'www.baidu.com'my_list = [1, 2, 3, 4, 5]my_dict = {'name': '黑马', 'url': 'www.tencent.com'}return render_template('index.html', url_str=url_str, my_list=my_list, my_dict=my_dict)if __name__ == '__main__':app.run()
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>FLASK TEST</title>
</head>
<body>
这是模板<br>
这是首页<br>
{{url_str}} <br>
{{my_list}} <br>
{{my_list.2}} <br>
{{my_list[2]}} <br>
{{my_dict}} <br>
{{my_dict.name}} <br>
{{my_dict['name']}} <br>
</body>
</html>

控制代码块的使用 if for等(for循环)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>FLASK TEST</title>
</head>
<body>
这是模板<br>
这是首页<br>
{{url_str}} <br>
{{my_list}} <br>
{{my_list.2}} <br>
{{my_list[2]}} <br>
{{my_dict}} <br>
{{my_dict.name}} <br>
{{my_dict['name']}} <br><hr>{% for i in my_list %}{% if i >=3 %}{{i}} <br>{% endif %}
{% endfor %}
</body>
</html>
# -*- coding: utf-8 -*-
"""
@File    : flask_template_demo.py
@Time    : 2021/1/26 16:41
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_templateapp = Flask(__name__)@app.route('/')
def hello_world():url_str = 'www.baidu.com'my_list = [1, 2, 3, 4, 5]my_dict = {'name': '黑马', 'url': 'www.tencent.com'}return render_template('index.html', url_str=url_str, my_list=my_list, my_dict=my_dict)if __name__ == '__main__':app.run()

过滤器的使用(比如小写转大写,获取第几个字符之类的)


web表单及验证

# -*- coding: utf-8 -*-
"""
@File    : flask_WTF.py
@Time    : 2021/1/27 14:10
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_template, requestapp = Flask(__name__)@app.route('/', methods=["GET", "POST"])
def index():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')if not all([username, password, password2]):return '参数不完整'else:return 'success'return render_template('index_WTF.html')if __name__ == '__main__':app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flask_WTF</title>
</head>
<body>
<form method="post"><label>用户名:</label><input type="text" name="username"><br><label>密码:</label><input type="password" name="password"><br><label>确认密码:</label><input type="password" name="password2"><br><input type="submit" value="提交"><br>
</form>
</body>
</html>


flash消息闪现,给模板传递消息,消息加密(做混淆用)

flask_WTF.py

# -*- coding: utf-8 -*-
"""
@File    : flask_WTF.py
@Time    : 2021/1/27 14:10
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_template, request, flashapp = Flask(__name__)
app.secret_key = '12345678'  # 随便填@app.route('/', methods=["GET", "POST"])
def index():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')if not all([username, password, password2]):# return '参数不完整'flash('参数不完整')else:# return 'success'return 'sucess'return render_template('index_WTF.html')if __name__ == '__main__':app.run(debug=True)

index_WTF.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flask_WTF</title>
</head>
<body>
<form method="post"><label>用户名:</label><input type="text" name="username"><br><label>密码:</label><input type="password" name="password"><br><label>确认密码:</label><input type="password" name="password2"><br><input type="submit" value="提交"><br>{% for message in get_flashed_messages() %}{{ message }}{% endfor %}
</form>
</body>
</html>



表单样式的显示(使用flask_wtf模板创建表单)

https://www.bilibili.com/video/BV17W41177oE?p=16

# -*- coding: utf-8 -*-
"""
@File    : flask_WTF.py
@Time    : 2021/1/27 14:10
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_template, request, flash
from flask_wtf import FlaskForm
from wtforms import SubmitField, PasswordField, StringFieldapp = Flask(__name__)
app.secret_key = '12345678'  # 随便填# 自定义表单类
class LoginForm(FlaskForm):username = StringField('用户名:')password = PasswordField('密码:')password2 = PasswordField('确认密码:')submit = SubmitField('提交')@app.route('/form', methods=['GET', 'POST'])
def login():login_form = LoginForm()# 1. 判断请求方式if request.method == 'POST':# 2. 获取请求的参数username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')# 3. 验证参数. WTF可以一句话就实现所有的校验# 我们没有CSRF tokenif login_form.validate_on_submit():print(username, password)return 'success'else:flash('参数有误')return render_template('index_WTF.html', form=login_form)@app.route('/', methods=["GET", "POST"])
def index():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')if not all([username, password, password2]):# return '参数不完整'flash('参数不完整')else:# return 'success'return 'sucess'return render_template('index_WTF.html')if __name__ == '__main__':app.run(debug=True)

index_WTF.html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flask_WTF</title>
</head>
<body>
<form method="post"><label>用户名:</label><input type="text" name="username"><br><label>密码:</label><input type="password" name="password"><br><label>确认密码:</label><input type="password" name="password2"><br><input type="submit" value="提交"><br>{% for message in get_flashed_messages() %}{{ message }}{% endfor %}
</form><hr><form method="post">{{ form.csrf_token() }}{{ form.username.label }}{{ form.username }} <br>{{ form.password.label }}{{ form.password }} <br>{{ form.password2.label }}{{ form.password2 }} <br>{{ form.submit}} <br>
</form>
</body>
</html>

模板表单的验证 csrf_token

常用验证函数

怎么使用?



老师说validators是复数,所以可以传个列表,这推导??

但这写个tuple是啥意思?反正就是可迭代对象就行?(不能用tuple,会报错,只能用列表)

# -*- coding: utf-8 -*-
"""
@File    : flask_WTF.py
@Time    : 2021/1/27 14:10
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask, render_template, request, flash
from flask_wtf import FlaskForm
from wtforms import SubmitField, PasswordField, StringField
from wtforms.validators import DataRequired, EqualToapp = Flask(__name__)
app.secret_key = '12345678'  # 随便填# 自定义表单类
class LoginForm(FlaskForm):username = StringField('用户名:', validators=[DataRequired()])password = PasswordField('密码:', validators=[DataRequired()])password2 = PasswordField('确认密码:', validators=[DataRequired(), EqualTo('password', '提示:密码填入不一致')])submit = SubmitField('提交')@app.route('/form', methods=['GET', 'POST'])
def login():login_form = LoginForm()# 1. 判断请求方式if request.method == 'POST':# 2. 获取请求的参数username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')# 3. 验证参数. WTF可以一句话就实现所有的校验# 我们没有CSRF tokenif login_form.validate_on_submit():print(username, password)return 'success'else:flash('参数有误')return render_template('index_WTF.html', form=login_form)@app.route('/', methods=["GET", "POST"])
def index():if request.method == 'POST':username = request.form.get('username')password = request.form.get('password')password2 = request.form.get('password2')if not all([username, password, password2]):# return '参数不完整'flash('参数不完整')else:# return 'success'return 'success'return render_template('index_WTF.html')if __name__ == '__main__':app.run(debug=True)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>flask_WTF</title>
</head>
<body>
<form method="post"><label>用户名:</label><input type="text" name="username"><br><label>密码:</label><input type="password" name="password"><br><label>确认密码:</label><input type="password" name="password2"><br><input type="submit" value="提交"><br>{% for message in get_flashed_messages() %}{{ message }}{% endfor %}
</form><hr><form method="post">{{ form.csrf_token() }}{{ form.username.label }}{{ form.username }} <br>{{ form.password.label }}{{ form.password }} <br>{{ form.password2.label }}{{ form.password2 }} <br>{{ form.submit}} <br>
</form>
</body>
</html>


Flask中使用SQL数据库 SQLAlchemy(flask_sqlalchemy)(如果是使用mysql数据库,安装flask_mysqldb)


# -*- coding: utf-8 -*-
"""
@File    : flask_sqlalchemy_demo.py
@Time    : 2021/2/5 14:49
@Author  : Dontla
@Email   : sxana@qq.com
@Software: PyCharm
"""
from flask import Flask
from flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)
# 配置数据库地址
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:mysql@127.0.0.1/flask_sql_demo'
# 跟踪数据库修改 -- 不建议开启(消耗性能,同时未来版本中会移除)
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)@app.route('/')
def hello_world():return 'Hello World'if __name__ == '__main__':app.run(debug=False)

在电脑上还要创建sql数据库??

装好了,按照这个安装就行

数据库mysql是什么?win10如何安装使用mysql?

然后控制台执行命令,登入数据库:

C:\Users\Dontla>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.23 MySQL Community Server - GPLCopyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql>

创建数据库:

mysql> create database flask_demo charset=utf8;
Query OK, 1 row affected, 1 warning (0.02 sec)mysql>

使用数据库:

mysql> use flask_sql_demo;
Database changed
mysql>

显示数据库表单:

mysql> show tables;
Empty set (0.01 sec)mysql>

mysql数据模型的定义 常用SQLAlchemy字段类型/列选项/关系选项


表格式:

两个表做两个class

代码看下一节

数据库基本操作,增删改 db.session


我勒个去,应该找个python3的教程的,这个python2很多库用法不支持,替换也替换不了。。。。https://www.bilibili.com/video/BV17W41177oE?p=20&spm_id_from=pageDriver到此为止,再见!

Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)相关推荐

  1. 黑马程序员 C++ 基础语法入门 学习记录

    基础语法入门 文章目录 一.初识C++ 1.1 新建项目 1.2 编写项目 1.3 运行程序 1.4 注释 1.5 变量 1.6 常量 1.7 关键字 1.8 标识符命名规则 二.数据类型 2.1 整 ...

  2. Java语法快速学习-黑马程序员(个人整理版本)

    Java入门基础视频教程,java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili为了帮助广大对Java有兴趣和立志进入本行业的零基础学员,本套课程 ...

  3. 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案

    前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ +  ...

  4. 《黑马程序员》C++基础入门(一)

    0.写在前面 本篇笔记视频讲解地址:https://www.bilibili.com/video/BV1et411b73Z?p=1 笔记配合视频效果更好 外链图片上传失败已经解决,手动校正,如有错误和 ...

  5. 黑马程序员讲义--C++基础入门

    C++基础入门 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 Visual Studio是我们用来编写C+ ...

  6. 十佳程序员_面向非技术用户的十佳Web开发工具

    十佳程序员 We have selected a range of 10+ different web developer tools, especially made for nontechnica ...

  7. Git基础学习(黑马程序员笔记)

    Git介绍 Git是目前世界上最先进的分布式版本控制系统 Git安装 官网 Git与Github 两者区别 Git是一个分布式版本库控制系统,简单的说就是一个软件,用于记录一个或若干文件内容变化,以便 ...

  8. Java入门-学习黑马程序员Java基础视频教程(到P92)

    目录 P0:写在前面的小知识 P3:Java环境搭建: JDK安装.常用命令 P4:入门程序HelloWorld P7:补充知识:JDK组成.跨平台原理 P8:补充知识:JDK安装后Path和JAVA ...

  9. CSS 学习笔记总结(借鉴黑马程序员pink老师前端入门)

    1. CSS 简介 CSS 的主要使用场景就是美化网页,布局页面的 1.1 HTML 的局限性 说起 HTML ,他只关注内容的语义.比如 <h1> 表明这是一个大标题,<p> ...

最新文章

  1. Java 洛谷 求质数(素数)、合数、因数、最大公约数、最小公倍数
  2. for循环与内置方法详解
  3. 一步步学习EF Core(3.EF Core2.0路线图)
  4. 【操作系统】进程调度的不同层次
  5. c++语言的基本知识,C++基本知识总结
  6. SAP License:生产订单无目标成本解决办法
  7. 【Node】—系统模块
  8. Java Unable to load library ‘gsdll64‘: 报错,解决方案
  9. 如何使用 iCloud 钥匙串从 macOS Monterey 导入和导出密码?
  10. 成功实施ERP的规范流程
  11. 聚合物/硅胶色谱填粒径1.7μm到50μm
  12. Xshell 颜色配置
  13. 学习笔记-安全-MAC地址攻击
  14. cocos2d AABB碰撞检测
  15. ros launch中的节点工作空间路径
  16. 编写程序,生成一种贯穿10×10字符数组(初始时全为字符‘.‘)的“随机步法”。
  17. wifi开启位置服务器,如何设置wifi定位服务器地址
  18. SVM与K-Means
  19. React基础语法总结
  20. INSERT INTO… ON DUPLICATE KEY UPDATE用法

热门文章

  1. datatable里添加一个标识列
  2. 所罗门王之梦(程序员羊皮卷读书笔记)
  3. [转自天涯]很多年以前,我是一个中锋
  4. python连接oracle数据库的方法_Python3.6连接Oracle数据库的方法详解
  5. 【技术好文转载】为什么AI芯片是当今热点
  6. 【MM模块】Subcontracting 委外加工(外包)—2
  7. ABAP中操作回车、换行、回车加换行、的方案
  8. SAP系统配置常用命令大全
  9. SAP FICO年结
  10. DATE_GET_WEEK