flask框架菜鸟教程_flask框架是用来干什么的

flask框架菜鸟教程_flask框架是用来干什么的文章目录前言Flask基础概念和安装Flask快速入门小应用Flask之模板的使用后续,待更新。。。。前言最近开始学习flask框架,本文用于flask框架的基础入门学习,版本使用的是py3.7,学习内容相对比较简单,后续再扩充高级知识。Flask基础概念和安装首先我们得清楚,flask具体是个什么东东?我们学了flask有啥用?这里给出维基百科的解释:Flask是一个使…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

前言

最近开始学习flask 框架,本文用于flask 框架的基础入门学习,版本使用的是py3.7,学习内容相对比较简单,后续再扩充高级知识。

Flask 基础概念和安装

首先我们得清楚,flask 具体是个什么东东?我们学了flask 有啥用?

这里给出维基百科的解释:Flask是一个使用Python编写的轻量级Web应用框架。基于Werkzeug WSGI工具箱和Jinja2 模板引擎

安装就不多说了,直接输入以下命令即可:

pip install flask

Flask 快速入门小应用

学东西,得先知道我们用这个东西,能做出来一个什么东西。
一个最小的基于flask 的应用可能看上去像下面这个样子:

from flask import Flask
app = Flask(__name__)

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

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

运行起来的效果就是这样的:
在这里插入图片描述
具体,这串代码什么意思?
首先,我们导入了Flask 这个类
然后编写了一个hello_world 函数,返回一个“Hello World”字符串
这也就是为啥我们能在网页上看到一串字符串的原因。
那么剩下的是什么?

@app.route('/')

这一串代码,官方解释为路由,其实就是告诉你当用户访问哪个路径的时候,调用下面装饰的这个函数。
所以上面那个小应用的代码,意思就是,当我访问根路径(‘/’)时执行hello_world函数。
当然,一个函数被多个路由装饰的时候,意味着你可以通过多个路径执行到该函数。

调用app的run方法即可启动服务,指定’0.0.0.0’,这会让操作系统监听所有公网 IP。

app.run(0.0.0.0)

再看看下面这个例子:

from flask import Flask
app = Flask(__name__)

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

@app.route('/login')
def login():
    return 'Login Success!'

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

在这里插入图片描述
在这里插入图片描述

EZ ~~

Flask 之模板的使用

经过上面的小应用,我们可以简单的利用flask生成一个小的网页,但是,这网页我想要加点样式怎么办?
一个最简单也是最懒的方法:就是让函数直接返回一串html代码
比如下面这个例子:

@app.route('/')
@app.route('/index')
def hello_world():
    def index():
        user = {'username': 'Cxiansheng'}
        return '''
    <html>
        <head>
            <title>Home Page - CSDN</title>
        </head>
        <body>
            <h1>Hello, ''' + user['username'] + '''!</h1>
        </body>
    </html>'''

在这里插入图片描述
那么问题来了,我所有的函数都需要这串html代码怎么办?总不能所有的函数都返回一下这一段html代码吧。
这个时候,模板就派上用场了。
为了简化这些操作,Flask 配备了 Jinja2 模板引擎
我们把上面的html 代码装换成模板,命名为’index.html’:

<html>
    <head>
        <title>{
  
  { title }} - CSDN</title>
    </head>
    <body>
        <h1>Hello, {
  
  { user.username }}!</h1>
    </body>
</html>

然后就可以使用 render_template() 方法来渲染模板,传入必要的参数即可

@app.route('/')
@app.route('/index')
def hello_world():
    user = {'username': '这是模板生成的'}
    return render_template('index.html', title='Home', user=user)

在这里插入图片描述

偷懒成功,现在我们可以直接调用这个模板,而不需要手动返回html代码了。
突然一个念想:
那多个网页共有部分的html 代码可不可以也单独保存成一个模板?
例如CSDN的标题栏:
在这里插入图片描述
既然想偷懒,就继续偷懒下去吧。
我们可以利用模板继承的思想,去避免重复性的代码编写,例如:
在这里插入图片描述
在这里插入图片描述
我们利用上面的两个快速小应用,做一个标题栏,那么标题栏的html代码我们就可以做一个base.html用来给其他页面继承使用。
如何继承?
利用“{% extends ‘base.html’ %}”,即可继承base.html的代码
首先我们先看一下base.html的代码:

<html>
    <head>
        {% if title %}
        <title>{
  
  { title }} - CSDN</title>
        {% else %}
        <title>welcome - CSDN</title>
        {% endif %}
    </head>
    <body>
    <div>
        My Website:
        <a href="{
  
  { url_for('index') }}">Home</a>
        <a href="{
  
  { url_for('login') }}">Login</a>
    </div>

    <hr>
    {% block content %}{% endblock %}
    </body>
</html>

其中 {% block content %}{% endblock %}这两个标识,即标记继承过来的代码所占的坑,也就是说,如果index.html 代码继承了base.html代码,那么index.html代码将会被放置在 {% block content %}{% endblock %}这两个标识之间。

下面看看index.html代码

{% extends 'base.html' %}
{% block content %}
    <h1>Hello {
  
  { user.username }}!</h1>
{% endblock %}

那么到了这个阶段,我们就可以利用flask框架+Jinja2模板创建我们自己的网页啦

后续,待更新。。。。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/176037.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • HONOR荣耀50/荣耀50Pro怎么解锁huawei 荣耀50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验

    HONOR荣耀50/荣耀50Pro怎么解锁huawei 荣耀50pro屏幕锁开机锁激活设备锁了应该如何强制解除鸿蒙系统刷机解锁方法流程步骤不开机跳过锁屏移除锁定进系统方法经验今天带来一台用户华为荣耀50手机强制清除华为账号锁案例分享,这个台手机是用户公司手机,由于前使用者离职后未能退出手机的华为账号和锁屏密码,导致手机无法使用。自己通过简单的恢复出厂设置后,发现手机有华为账号锁无法激活手机,这才联系到刷机爱好者技术人员,给予远程强制刷机移除华为荣耀60的账号锁。在此提醒广大用户,登录的华为账号建议绑定经常使用的手机号码,防止无法找回密码从而到时手机无法使用。在刷机解锁过程中需要准备以下工具:链接:百度网盘请输入提取码提取码:8888备用下载连接:yun.p

  • SEO优化怎么做_个人做SEO在哪里可以找到

    SEO优化怎么做_个人做SEO在哪里可以找到很多新人刚接触SEO,不知道从哪里开始着手优化,现在就给大家讲讲SEO优化到底要怎么做。按照下面的步骤来,就基本完成一个网站优化的思路。如果你想了解关于SEO的最新的优化操作,以及这方面的系统化的知识和思维的话,你可以来这个群:开头是四三七三,中间是四零,结尾是二二六。在这里你可以每天都能学习到关于SEO优化的知识,会有专门的人讲解,你只需要付出你的时间和用心的听就行!    SE

  • 为什么面试要问红黑树_hr面试问题大全及答案

    为什么面试要问红黑树_hr面试问题大全及答案版权所有,转载请注明出处,谢谢!http://blog.csdn.net/silangquan/article/details/18655795连续两次面试都问到了红黑树,关键两次都没有答好,这次就

  • 腾讯与唯品会笔试面试经历[通俗易懂]

    腾讯与唯品会笔试面试经历

  • python udp发送数据(http视频传输)

    一、前言最近想写一个实时的视频传输程序,然后上网找了很久没有找到合适的我想用OpenCV进行图像采集,然后用pygame将视频信号转化为可通过UDP网络传输的字符流,然后到达终端后再通过pygame对字符流进行解析,进而将图像显示出来之所以使用UDP传输而不是TCP传输,是因为UDP在视频传输方面拥有快速、无需连接等优点,适合密集传送大量信息的场合但UDP传输有一个问题,…

  • mysql集群之MYSQL CLUSTER

    mysql集群之MYSQL CLUSTERMYSQLCLUSTER

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号