Flask学习 黑马程序员-6节课入门Flask框架web开发视频(中途撤退,寻找py3教程)
文章目录
- 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教程)相关推荐
- 黑马程序员 C++ 基础语法入门 学习记录
基础语法入门 文章目录 一.初识C++ 1.1 新建项目 1.2 编写项目 1.3 运行程序 1.4 注释 1.5 变量 1.6 常量 1.7 关键字 1.8 标识符命名规则 二.数据类型 2.1 整 ...
- Java语法快速学习-黑马程序员(个人整理版本)
Java入门基础视频教程,java零基础自学首选黑马程序员Java入门教程(含Java项目和Java真题)_哔哩哔哩_bilibili为了帮助广大对Java有兴趣和立志进入本行业的零基础学员,本套课程 ...
- 黑马程序员 python快速编程入门课后答案_Python快速编程入门课后程序题答案
前言 本文只是简单的整理了一下课后习题的编程题,具体的填空.选择.判断可以见:Python快速编程入门课后习题答案 第一章 1.编写一个Python程序,输出如下图效果. ++++++++++ + ...
- 《黑马程序员》C++基础入门(一)
0.写在前面 本篇笔记视频讲解地址:https://www.bilibili.com/video/BV1et411b73Z?p=1 笔记配合视频效果更好 外链图片上传失败已经解决,手动校正,如有错误和 ...
- 黑马程序员讲义--C++基础入门
C++基础入门 1 C++初识 1.1 第一个C++程序 编写一个C++程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 Visual Studio是我们用来编写C+ ...
- 十佳程序员_面向非技术用户的十佳Web开发工具
十佳程序员 We have selected a range of 10+ different web developer tools, especially made for nontechnica ...
- Git基础学习(黑马程序员笔记)
Git介绍 Git是目前世界上最先进的分布式版本控制系统 Git安装 官网 Git与Github 两者区别 Git是一个分布式版本库控制系统,简单的说就是一个软件,用于记录一个或若干文件内容变化,以便 ...
- Java入门-学习黑马程序员Java基础视频教程(到P92)
目录 P0:写在前面的小知识 P3:Java环境搭建: JDK安装.常用命令 P4:入门程序HelloWorld P7:补充知识:JDK组成.跨平台原理 P8:补充知识:JDK安装后Path和JAVA ...
- CSS 学习笔记总结(借鉴黑马程序员pink老师前端入门)
1. CSS 简介 CSS 的主要使用场景就是美化网页,布局页面的 1.1 HTML 的局限性 说起 HTML ,他只关注内容的语义.比如 <h1> 表明这是一个大标题,<p> ...
最新文章
- Java 洛谷 求质数(素数)、合数、因数、最大公约数、最小公倍数
- for循环与内置方法详解
- 一步步学习EF Core(3.EF Core2.0路线图)
- 【操作系统】进程调度的不同层次
- c++语言的基本知识,C++基本知识总结
- SAP License:生产订单无目标成本解决办法
- 【Node】—系统模块
- Java Unable to load library ‘gsdll64‘: 报错,解决方案
- 如何使用 iCloud 钥匙串从 macOS Monterey 导入和导出密码?
- 成功实施ERP的规范流程
- 聚合物/硅胶色谱填粒径1.7μm到50μm
- Xshell 颜色配置
- 学习笔记-安全-MAC地址攻击
- cocos2d AABB碰撞检测
- ros launch中的节点工作空间路径
- 编写程序,生成一种贯穿10×10字符数组(初始时全为字符‘.‘)的“随机步法”。
- wifi开启位置服务器,如何设置wifi定位服务器地址
- SVM与K-Means
- React基础语法总结
- INSERT INTO… ON DUPLICATE KEY UPDATE用法