专栏首页JAVAandPython君小白学Flask第二天| app对象的初始化和配置

小白学Flask第二天| app对象的初始化和配置

本文主要内容:

  1. flask应用对象初始化参数说明
  2. 静态文件目录与路由说明
  3. flask的配置参数设置
  4. app的run使用说明

flask应用对象初始化参数说明

昨天我们写了第一个Flask程序,我们来回顾一下代码:

from flask import Flask

# 创建Flask的应用对象
app = Flask(__name__)    # __name__ 就是当前模块的名字

# 装饰器,绑定视图函数的路径
@app.route('/')
def hello_world():
    # 视图函数
    return 'Hello World!'

if __name__ == '__main__':
    # 运行本地服务器进行测试flask程序
    app.run()

今天我们就来详细的讲解每一句的含义,这对于我们新接触一个框架是十分有必要的。

首先我们来说说

app = Flask(__name__)    # __name__ 就是当前模块的名字

__name__是当前模块的名字,可是在第12行的判断语句中写着:

if __name__ == '__main__':
    # 运行本地服务器进行测试flask程序
    app.run()

难道模板名字叫__main__吗?我应该是我创建的py文件的文件名吗?其实这里有一个小知识点,当我们把某个模板当做启动模板时,那么这个模板的__name__会默认成为__main__,如果不是作为启动模板,也就是我们导入到启动模板当中的模板名称才会是文件的文件名。

上面这张图就是我们再demo.py文件中直接运行的,也就是说此时的demo.py模板作为了启动模板。

这张图是我们将demo模板导入到app模板当中,我们可以看到打印出来的模板名称是demo自己本身的文件名。

相信大家大概明白__name__的意思了。

除了__name__这个参数,其实Flask的应用对象还可以放一些参数。

static_url_path: 访问静态资源的url前缀

static_folder: 默认‘static’

template_folder: 默认‘templates’

咱们一个一个来说,首先贴出我们的目录

static_url_path: 访问静态资源的url前缀

这个参数大部分人会认为就是静态资源的路径,其实大错特错,他只是访问静态资源的一个url前缀,跟路径没有半毛钱关系。

app = Flask(__name__, static_url_path="/python")   

例如上面,我把访问静态资源的url前缀改为python,然后我去static文件夹创建一个html文件

那么我该如何去访问这个html文件呢?

当我们访问http://127.0.0.1:5000/static/index.html时,会发现找不到。

当我们访问http://127.0.0.1:5000/python/index.html时,发现html源码正常显示。

通过这样的演示,大家应该能够知道static_url_path参数的含义。

讲完这个参数,那么来下一个static_folder: 默认‘static’,其实这个参数才是真正的静态文件的路径,路径可以是绝对路径也可以是相对路径,他所对应的路径就是静态文件所在的地方。

最后一个参数 template_folder: 默认‘templates’ ,这个参数非常容易理解,就是模板文件的目录。

Flask的配置参数设置

有关于Flask的配置有几种方法,我一个一个讲

  1. 通过配置文件来设置

我们首先在根目录创建一个文件 config.cfg

我们在配置文件中设置一个参数,配置文件写好了,我们回到app.py

我们怎么去使用这个配置文件呢?

app.config.from_pyfile("config.cfg")

通过上面这句代码就OK了,我们看看效果:

2.直接进行配置

app.debug = True

直接添加一个即可,当然这种只适用于不需要添加太多的配置参数。

其实还有其他的一些配置方式,但是掌握这两种配置方式就差不多了。

app的run使用说明

在app的run方法中含有两个参数

    app.run(host="127.0.0.1", port="5000")

第一个则是你要开启的ip地址,第二个则是你所打开的端口。


连续打卡送书活动:

Flask系列文章大概会有15-20篇,如果读者在每次文章发布后进行打卡,该系列结束后会赠送一本或者多本书籍。

打卡方式:参与“1元混脸熟”的赞赏小活动,简单点说就是每次文章发布在文末赞赏1元,记住只能是1元。

“1元混脸熟”活动我会把经常赞赏我的朋友拉进铁粉群,群内会有一系列送书活动,当然也可以聊任何东西(赚钱、推广、经验分享)。

该系列文章结束,我会送一直坚持连续打卡的读者朋友一本或者多本书,当然书的价值绝对比你打卡的金额多。

本文分享自微信公众号 - JAVAandPython君(JAVAandPythonJun),作者:JAP君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 23种设计模式之单例模式进阶

    前一篇推文里面我们初步介绍了一下23种设计模式,并且讲解了其中的单例模式的两种情况,今天我们再来讲一讲另外几种单例模式的情况,因为我们都知道懒汉式和饿...

    Python进击者
  • 小白学Flask第一天 | 我的第一个Flask程序

    相信大部分人进来读这篇文章是因为以前没接触过Flask框架,这里我给大家介绍一下这个框架。

    Python进击者
  • 小白学Flask第九天| 看看模板的那些事(一)

    在Flask当中的模板被称为Jinja2模板,那么我们怎么去使用模板呢?大家可以看到下面两块代码:

    Python进击者
  • 如何为mpvue项目添加底部tab

    文章https://vip.kingdee.com/article/10314中已经实现快速创建一个mpvue项目,在这里以此为基础实现如何添加底部tab。 ...

    honey缘木鱼
  • Hive元数据服务MetaStore

    MetaSore 是 Hive 元数据存储的地方。Hive 数据库、表、函数等的定义都存储在 Metastore 中。根据系统配置方式,统计信息和授权记录也可以...

    smartsi
  • 如何控制product search attribute支持的操作类型

    每个attribute支持的operator列表通过controller的get_dquery_definitions方法返回。

    Jerry Wang
  • hive安装部署

    1、 准备环境 1, 软件准备 Java-- jdk-8u121-linux-x64.tar.gz Hadoop--hadoop-2.7.4.tar.gz (j...

    Spark学习技巧
  • 2月幽默集合(上)

    KEN DO EVERTHING
  • 在程序员这个职业当中遇到只提需求,自己不写代码却挑别人代码错误的同事是什么感受?

    作为一个写了十几年代码的老程序员,楼主说的同事其实就是产品经理或者项目经理,提出需求是老板赋予他们的职责,作为一个程序员首先要懂得如何拿到需求然后进行任务拆分形...

    程序员互动联盟
  • CTF---Web入门第十四题 忘记密码了

    忘记密码了分值:20 来源: Justatest 难度:中 参与人数:7706人 Get Flag:2232人 答题人数:2386人 解题通过率:94% 找...

    Angel_Kitty

扫码关注云+社区

领取腾讯云代金券