• 搜索
  •  找回密码
     立即注册

    QQ登录

    只需一步,快速开始

  • 登录
  • 注册
  • 找回密码
  • 管理
圈内事儿文章详情

Python的Flask框架的使用-入门

2020-09-08阅读 618 币圈动向 我要关注

一.最简单的Flask程序

from flask import Flask
app = Flask(__name__)

@app.route('/')def hello_world(): return 'Hello World!'

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


二.路由请求方式的限定 

# coding:utf-8
from flask import Flask
app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])def index(): return 'Hello World!'

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


三.路由参数的处理 

# coding:utf-8
from flask import Flask
app = Flask(__name__)

# 当为int:时,限制只有可以转化成int的参数能找到@app.route('/hello/<int:some_num>')def hello_someone(some_num): return 'hello %s' % some_num

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


四.Jinji2模板引擎

Jinja2的设计思想源于Django的模板引擎

Flask提供的render_template封装了Jinja2模板引擎

 

使用render_template

# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)

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

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

 

涉及到的index.html, 路径:项目名/templates/index.html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>请开始你的表演</body></html>


五.模板中的变量代码块 

定义字符串,listdict等参数

# coding:utf-8
from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')def index(): url = 'www.python.org' pythons = ['python2', 'python3'] param_dict = {'system': 'windows'} return render_template('index.html', python_url=url, pythons=pythons, param_dict=param_dict)

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


涉及到的html

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Title</title></head><body>请开始你的表演<br><hr>python官网<br>{{ python_url }}<br><hr>get python<br>{{ pythons[1] }}{# pythons.1也可以 #}<hr>get system<br>{{ param_dict['system'] }}<br>{{ param_dict.system }}<br><hr>{# 这是一些注释 #}</body></html>


页面展示



六.模板中的控制代码块

{# 使用if, for加tab的快捷方式 #}{% if pythons %}{{ python_url }}{% endif %}
{% for python in pythons %}{{ python }}{% endfor %}


七.模板中的过滤器

<hr>链式调用<br>{{ 'hello world' | reverse | upper }}<br>{{ "hello world" | reverse | upper }}<br><hr>safe: 禁用转义,是否解析标签<br><p>{{ '<em>hello</em>' | safe }}</p><hr>capitalize: 变量首字母大写<br>{{ 'hello world' | capitalize}}<br><hr>title: 每个单词首字母大写<br>{{ 'hello world' | title}}<br><hr>upper: 全部字母变大写<br>{{ 'hello world' | upper}}<br><hr>lower: 全部字母变小写<br>{{ 'HELLO world' | lower}}<br><hr>reverse: 反转<br>{{ 'hello world' | reverse}}<br><hr>format: 格式化输出<br>{{ '%s %d' | format('name', 123)}}<br><hr>striptags: 渲染之前把值中所有的HTML标签都删掉<br>{{ '<em>hello</em>' | striptags}}<br><hr>truncate: 字符串截断 用法还不是很清楚<br>{{ 'hello world' | truncate(5)}}<br><hr><hr><h1>list的操作</h1><br>first: 取列表第一个<br>{{ [1,2,3,4] | first }}<br><hr>last: 取列表最后一个<br>{{ [1,2,3,4] | last }}<br><hr>length: 获取列表长度<br>{{ [1,2,3,4] | length }}<br><hr>sum: 列表数据求和<br>{{ [1,2,3,4,9,9,6] | sum }}<br><hr>sort: 排序列表<br>{{ [1,2,3,4,9,9,6] | sort }}<br><hr>filter函数<br>{% filter upper %} fadfasrew{% endfilter %}

效果


八.普通的表单验证

# coding:utf-8
from flask import Flask, render_template, request, flash
app = Flask(__name__)
app.secret_key = 'xiangyingxiongzhijing'

@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]): flash('param error') elif password != password2: flash('password 不一致') else: return '登陆成功' return render_template('normal_form.html')

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

涉及到的页面

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>Normal Form</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>

九. 今日摘抄

"一个民族之所以伟大"    "根本就在于""在任何困难和风险面前"      "都从来"      "不放弃"      "不退缩"      "不止步"



炒币助手
  • 加入新手交流群:币种行情分析、币圈热点解读
  • 添加助理微信,一对一专业指导:sokeol
  • 上一篇:多相流|05VOF多相流表面张力部分理论

    下一篇:HadleyWickham:一个改变了R的人

    分享到:

    相关文章