Flask 响应四剑客 模板层

介绍

说明:
flask是一个轻量级的web框架,被称为微型框架。只提供了一个高效稳定的核心,其它全部通过扩展来实现。意思就是你可以根据项目需要进行量身定制,也意味着你需要不断学习相关的扩展库。

核心:

WSGI系统、调试、路由

模板引擎(Jinja2,是flask核心开发者人员发开的)

安装:

pip install flask

werkzeug简介

Flask的socket是基于Werkzeug 实现的

Werkzeug是一个WSGI工具包,他可以作为一个Web框架的底层库。这里稍微说一下, werkzeug 不是一个web服务器,也不是一个web框架,而是一个工具包,官方的介绍说是一个 WSGI 工具包,它可以作为一个 Web 框架的底层库,因为它封装好了很多 Web 框架的东西,例如 Request,Response 等等

from werkzeug.wrappers import Request, Response

@Request.application
def hello(request):
    return Response('Hello World!')

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 4000, hello)  # run_simple方法的第三个参数会加括号执行

Flask运行的本质

from flask import Flask
# 实例化产生一个Flask对象
app = Flask(__name__)
# 装饰器路由 内部会形成一个路由与函数的对应关系,如:{'/':index},当请求的路由是'/'就会调用index函数
@app.route('/')  # 注意: 这里要理解有参装饰器以及装饰器加括号后运行的逻辑
def index():
    return 'ok'

if __name__ == '__main__':
    app.run()
    # 本质是调用 run_simple(host, port, self, **options), 这里的self是Falsk对象,即app
    # app加括号执行 调用的是Flask的__call__里的wsgi_app方法,返回response



def wsgi_app(self, environ, start_response):
    # 将请求相关的数据environ封装到了request_context中
    ctx = self.request_context(environ)
    ...

def __call__(self, environ, start_response):
    return self.wsgi_app(environ, start_response)  # environ: 是基于HTTP请求的所有数据(请求首行,头,体)

启动参数
参数 说明
debug 是否开启调试模式,默认为False;开启后会有出错调试信息,文件会自动加载。
threaded 是否开启多线程,默认为Flase。
host 指定主机,默认为’127.0.0.1’,设置为’0.0.0.0’后可以通过IP进制访问
port 指定端口,默认为5000。
启动示例:app.run(debug=True, threaded=True, host=‘0.0.0.0’, port=5555)

响应四剑客 render_template,redirect,jsonify

返回字符串

@app.route('/')
def index():
    1. 直接返回字符串
    return 'ok'

返回HTML 

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    2 返回HTML
    return render_template('index.html')  # 参数: xxx.HTML

跳转页面(重定向)

from flask import Flask, redirect
app = Flask(__name__)

@app.route('/')
def index():
    3 跳转页面
    return redirect('/login')  # 参数: url

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

返回json数据

from flask import Flask, jsonify
app = Flask(__name__)

@app.route('/')
def index():
    4 返回json数据
    dic = {'name':'xionger', 'age': 20}
    return jsonify(dic)  # 参数: 要序列化的数据

模板层 templates

1. 创建templates文件夹
2. 文件夹内创建HTML文件

视图函数向HTML页面传递数据:

方式一
@app.route('/')
def index():
    dic = {'name': 'xionger', 'age': 20}
    return render_template('index.html', num=100, dic_data=dic)
方式二
from flask import Flask, render_template, Markup
app = Flask(__name__)

def func(t1, t2):
    return Markup(f'<h1>hahaha{t1}{t2}</h1>')

@app.route('/list',methods=['GET'])  # 该视图函数允许的请求方式为 GET
def list():
    return render_template('list.html',html="<h1>hahaha</h1>", func=func)

list.html
    {{ html|safe }}
    {{ func(1, 2) }}

模板语法

<body>
    <p>{{ num }}</p>  100
    <p>{{ dic_data.name }}</p>  xionger
    <p>{{ dic_data.get('name') }}</p>  xionger
    <p>{{ dic_data['name'] }}</p>  xionger
</body>
<!-- 字典, 列表等数据类型在python中如何使用, 在模板中就如何使用 -->

<!-- 遍历循环 -->
<body>
    <h1>用户列表</h1>
    <table>
        {% for k,v in user_dict.items() %}
        <tr>
            <td>{{k}}</td>
            <td>{{v.name}}</td>
            <td>{{v['name']}}</td>
            <td>{{v.get('name')}}</td>
            <td><a href="/detail/{{k}}">查看详细</a></td>
        </tr>
        {% endfor %}
    </table>
</body>

<!-- 逻辑判断 -->
<body>
    <h1>用户列表</h1>
    <table>
        {% if name %}
          <h1>Hello {{ name }}!</h1>
        {% else %}
          <h1>Hello World!</h1>
        {% endif %}
    </table>
</body>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《Python入门编程三剑客PDF》是一本深受Python初学者喜爱的编程指南。它深入浅出地介绍了Python编程的核心概念、语法规则以及常用的编程技巧。 不同于其他编程入门书籍,该书采用了“三剑客”的形象来描述Python编程的三个重要组成部分,即Python解释器、编辑器和交互式环境。这三个工具在Python编程中起到了相互配合的重要作用。 Python解释器是Python编程中最重要的工具之一,它负责将我们编写的Python代码转化为机器可以理解的语言。这本书详细介绍了Python解释器的不同版本,如CPython、Jython和IronPython等,并解释了它们的特点和适用场景。 另外,该书还介绍了多个常用的Python编辑器,如IDLE、PyCharm和Sublime Text等。这些编辑器提供了各种方便的功能,如代码高亮、代码补全和调试功能等,可以极大地提高编码的效率和质量。 最后,该书还详细介绍了Python的交互式环境,如命令行交互式环境和Jupyter Notebook等。通过这些交互式环境,我们可以方便地输入Python代码并立即看到结果,这对于学习和调试代码非常有帮助。 总之,《Python入门编程三剑客PDF》通过深入浅出的方式介绍了Python编程的三个重要组成部分,帮助初学者快速入门和掌握基本的编程技能。无论是对于编程初学者还是对于已有编程经验的人士来说,这本书都是一本不可多得的宝贵资料。 ### 回答2: 《Python入门编程三剑客PDF》是一本关于Python编程入门的电子书。Python作为一门简单易学且功能强大的编程语言,吸引了越来越多的编程爱好者和初学者。这本电子书通过三个"剑客"的角度,提供了详细而全面的Python入门知识。 第一个"剑客"是语法剑客,详细介绍了Python的基本语法和常用数据类型,如字符串、列表和字典等。读者可以通过学习这部分内容掌握Python的基本语法和编程基础。 第二个"剑客"是功能剑客,介绍了Python的常用功能和模块。这部分内容包括文件操作、网络编程、Web开发、数据库连接等方面的知识,读者可以通过学习这些知识拓宽自己的编程技能和应用领域。 第三个"剑客"是项目剑客,通过实例项目的方式讲解Python的应用。这些项目涵盖了数据分析、机器学习、自动化运维等不同领域,读者可以通过完成这些项目来巩固自己的学习成果,提升解决实际问题的能力。 《Python入门编程三剑客PDF》以清晰简洁的语言和丰富的实例,帮助读者快速入门Python编程。不仅可以作为初学者的入门教程,也适合有一定编程经验的读者进一步学习Python。 通过阅读这本电子书,读者能够系统地学习Python的语法和基本功能,同时也能够通过实例更好地理解和运用这些知识。总结而言,这本《Python入门编程三剑客PDF》是一本很好的Python入门教材,对于想要学习Python编程的人来说是一本不可多得的资源。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值