flask 基础语法学习

回顾

#6行flask
from flask import Flask
app = Flask(__name__)
@app.route("/")
def index():
    return "HelloWorld!!"
app.run()

1.response

from flask import render_template,redirect,send_file,jsonify
return =httpresponse
render_template
redirect
特殊返回值
1.send_file(文件路径) 打开文件并返回文件内容 Content-Type 文件类型 自动识别
2.jsonify({k:v}) Content-Type:application/json app.config["JSONIFY_MIMETYPE"]

2.request

request.method 请求方式
request.args url参数
print(request.args.to_dict())#转换成字典
request.form FormData 数据
request.json #请求头 Content-Type:application/json 数据序列化至此
request.data 只要请求体中有内容 b"”
request.files 接收FormData中的文件

3.session

from flask import session
app.secret_key="123213"
session["user"]="username"

4.路由

动态参数
@app.route("/detail/<stu_id>")
def detail(stu_id)
    1.endpoint Flask Mapping 路由和视图的指向
    2.methods 允许进入视图函数的请求方式

5.初始化配置

Flask(__name__) 中
1.template_folder 模版存放路径
2.static_folder 静态文件存放路径
3.static_url_path 金泰文件访问路径

6.config对象 正式测试环境

 2.Flask对象配置
    app.config == app.default_config 查看默认配置 及 配置项

    class Obj(object):
        DEBUG = True

    app.config.from_object(Obj) # 记住

7.蓝图

Flask蓝图
    Blueprint:  bp.py
    from flask import Blueprint
    # 把Blueprint理解为 不能被 Run 的 Flask 对象
    bp = Blueprint("bp",__name__,url_prefix="/user")

    @bp.route("/bp",methods=["GET","Post"])
    def my_bp():
        return "I am bp in user.py"

    __init__py
    from flask import Flask
    from .views import add

    def create_app():
        app=Flask(__name__)
        app.register_blueprint(add.add)
        return  app

    app.py:
    from flask import Flask
    from user import bp
    from acc import acc
    app = Flask(__name__)

    app.register_blueprint(bp)
    app.register_blueprint(acc)

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

8.特殊装饰器 中间件

@app.before_request # 在请求进入视图函数之前
@app.after_request # 结束视图函数之后,在响应返回客户端之前
def af5(ret):

正常 be1 - be2 - vf - af5 - af4 - af3 - af2 - af1
异常 be1 - af5 - af4 - af3 - af2 - af1

@app.errorhandler(404)
def error404(error_message):

9.CBV

from flask import views

class Login(views.MethodView):
    def get(self):
        pass

    def post(self):
        pass

app.add_url_rule("/login",endpoint=None,view_func=Login.as_view(name="login"))

endpoint == as_view(name="login") 中的 "login"

jianjin2 模版

    {{}} 引用 执行函数
    {%%} 逻辑代码

    {{ stu_list[0].name }}{{ stu_list.0.age }}
    {{ stu_dict }}

{% for stu in stu_list %}
    <p>{{ stu.name }}{{ stu.get("age") }}{{ stu["gender"] }}</p>
{% endfor %}
#if判断
{% if v["gender"] == "中" %}
    男
{% else %}
    {{ v["gender"] }}
{% endif %}

自定义标签simple_tag

@app.template_global()#全局使用 可选
def ab(a,b):
    return a+b
 html中引入
 {{ ab(4,4) }}

 前端执行html
@app.route("/")
def index():
    tag = "<input type=‘text‘ name=‘user‘ value=‘xiao‘>"
    return render_template("index.html",tag=tag)
<body>

    {{ tag|safe }}

</body>

后端执行html
from flask import Markup  # 导入 flask 中的 Markup 模块
@app.route("/")
def index():
    tag = "<input type=‘text‘ name=‘user‘ value=‘xiao‘>"
    # Markup帮助咱们在HTML的标签上做了一层封装,让Jinja2模板语言知道这是一个安全的HTML标签
    markup_tag = Markup(tag)
    print(markup_tag,type(markup_tag))

    return render_template("index.html", tag=markup_tag)

母板
index.html
<body>
    <h1>Welcome to My</h1>
    <h2>下面的内容是不一样的</h2>
    {% block content %}

    {% endblock %}
    <h2>上面的内容是不一样的,但是下面的内容是一样的</h2>
    <h1>My is Good</h1>
</body>
login.html
{% extends "index.html"%}
{% block content %}
{% endblock %}

include jinja2
login.html
<h4>欢迎登陆</h4>
<form>
    用户名:<input type="text" name="user">
    密码:<input type="text" name="pwd">
    <input type="submit" value="提交">
</form>

index.html 文件中的内容

<body>

    <h1>Welcome to My</h1>

    {% include "login.html" %}
    <h2>上面的内容是不一样的,但是下面的内容是一样的</h2>

    <h1>My is Good</h1>

</body>

原文地址:https://www.cnblogs.com/zaizai1573/p/10699100.html

时间: 2024-11-08 22:56:19

flask 基础语法学习的相关文章

【JavaScript】02.基础语法学习

[JavaScript]02.基础语法学习 引言: 老农认为(老农是我对自己的昵称),学习任何一门计算机程序语言都要先从它的语法知识开始.计算机程序语言由一堆预定义的字符和书写这些字符的规则组成.这些预定义的字符在语言里面叫做关键字或者保留字,书写这些字符的规则叫做语法. 计算机语言(Computer Lnguage),是指用于人与计算机之间通讯的语言.语言分为自然语言与人工语言两大类.自然语言是人类在自身发展的过程中形成的语言,是人与人之间传递信息的媒介.人工语言指的是人们为了某种目的而自行设

Swift基础语法学习总结(转)

Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘

Swift基础语法学习总结(一)

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结一

1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重载

Swift基础语法学习总结

1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型,几乎所有类型都是可打印的. 1.3) swift在语句后面加分号与否都是正确的,但是swift偏好的风格是不在结尾处加分号的.如果有多个语句,必须用分号隔开. 1.4) 在一个数字中庸下划线(_)会被忽视,方便认出大数值的的数字,也可以在前面补零. 1.5) swift不允许在不同种类型间做加减乘除,要先做类型转换或运算符重

关于Html基础语法学习

晚上做完初赛,好像有点颓,就来学了学html,毕竟博客里面会用到嘛. 首先贴出我所学习的教程 http://www.w3school.com.cn/html/index.asp 我觉得吧,可能以我的记忆也就只能记下这一小部分东西了,不过也算够了吧 ***下面切入正题 首先html是用来搭建站点的语言(这是我的理解qaq) 然后是一些简单的语法1 <html> <body> <p>Hello world!</p> </body> </html

python基础语法学习常见小问题

说明:我是最近觉得python在完成很多工作中方便使用而且功能强大,想突击学习一下.用的是廖雪峰老师的教程,学习python3.X.这里是廖雪峰老师的网站链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 本人用的windows学习python: 一.常见小的细节: 1.python中 elif 是else if的缩写: 2.python初始使用有交互式的,就是有>>>

Swift基础语法学习总结二

1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参数需要指明类型,而如果没有返回值可以不写->(),返回值只需要写返回类型,如果写了返回名称,可以在函数调用后的值用点语法访问 1.3 在参数名称前可以加上外部参数名,调用的时候就可以带上它了,如果外部参数名和内部参数名相同则可以直接在内部参数名前加#即可 1.4 如果跟参数设置一个默认值,则swift会自动加上外部参数名,如果不想

Java基础语法学习(1)switch...case

今天有幸被召回母校给即将毕业的学弟学妹们讲我这两年的工作史,看了下母校没啥特别的变化,就是寝室都安了空调,学妹们都非常漂亮而已..好了不扯蛋了,说下今天的主题吧.这些天我在深度定制语法高亮功能的同时发现了博客园提供的一些有意思的函数,甚至有几个博客园都没用到,我也不知道怎么才能触发那些功能..打开这个js就可以看到很多好用的东西了,虽然写的不怎么样,但是至少有这些功能. ps: 推荐安装一个代码格式化的插件,否则一坨看着蛋疼.比如第一个就是 log,方便调试. www.qidian.com/Bo