Flask:让第一个项目跑起来

  在上一篇文章:Flask:项目的准备工作中,我写了flask项目的准备工作,不清除创建flask项目需要做哪些准备的朋友可以点击链接看看

1、最简单的Flask项目

代码:

from flask import Flask

# 创建一个应用
app = Flask(__name__)

@app.route("/")
def index():
    return "hello flask"

if __name__ == ‘__main__‘:
    app.run(host="127.0.0.1", port=5000, debug=True)

2、代码解析

(1)第一部分

from flask import Flask

  导包代码就不用多做解释了吧,这一句代码的作用就是从flask框架中导入一个名为Flask的类

(2)第二部分

# 创建一个应用
app = Flask(__name__)

  这里就是实例化一个名为app的Flask对象,并将变量__name__作为参数传入到对象里面,对变量__name__有疑问的朋友可以看下这篇博客:python:__name__的使用

(3)第三部分

@app.route("/")
def index():
    return "hello flask"

  上面的@app.route("/")是一个装饰器,下面是一个视图函数,在pycharm按住ctrl键点击route查看源代码:

def route(self, rule, **options):
        def decorator(f):
            endpoint = options.pop("endpoint", None)
            self.add_url_rule(rule, endpoint, f, **options)
            return f

        return decorator

  使用这个装饰器将把"/"传给rule参数,将函数index()传给装饰器内嵌函数的f参数;最后,很明显,这里没有给**options传参,因此options(数据格式为字典)为空

  内嵌函数的第一句:endpoint = options.pop("endpoint", None),使用pop方法从字典中将key为"endpoint"的value取出来给endpoint变量,若这个key不存在则将None传给变量endpoint;很明显,这里的options为空,因此endpoint的值为None

  内嵌函数的第二句:self.add_url_rule(rule, endpoint, f, **options),将变量rule("/")、endpoint(None)、f(视图函数index)、**options(为空)作为参数传给add_url_rule方法

  限于篇幅,这里就不继续深究add_url_rule()方法的作用了,有兴趣的朋友可以通过pycharm去查看它的源代码

(4)第四部分

if __name__ == ‘__main__‘:
    app.run(host="127.0.0.1", port=5000, debug=True)

  这里执行app的run()方法,并传入几个参数,查看下run()的源代码(这里不展示完整源代码,只提取部分先进行分析):

def run(self, host=None, port=None, debug=None, load_dotenv=True, **options):if debug is not None:
        self.debug = bool(debug)

    _host = "127.0.0.1"
    _port = 5000
    host = host or sn_host or _host
    port = int(next((p for p in (port, sn_port) if p is not None), _port))

  这段代码还是比较容易理解的,先是将self.debug属性设置为run方法传进来的debug参数的值,然后在对host和port进行赋值。可以看出,默认情况下,host的值为127.0.0.1,port的值为5000

  注意:上面这段代码并非run()方法全部的源代码,源代码比较长,这里不过多展示,有兴趣的朋友可以自己去看,查看源代码对学习者的python功底有一定要求

原文地址:https://www.cnblogs.com/xmcwm/p/11780122.html

时间: 2024-08-11 23:11:09

Flask:让第一个项目跑起来的相关文章

Flask入门的第一个项目

前言: Flask简介:Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎. 想要学习flask,又非常迷茫,不知如何下手,终于写下第一个项目,分享给大家,希望能对刚刚入门的你有所帮助. flask+flask_bootstrap+flask_wtf+mysql 一.项目目录 static目录:存放静态文件 templates目录:用来存放响应的html文件 forms.py:存放表单定义 model.py:定义数据模

<转>从Java转iOS第一个项目总结

从Java转iOS第一个项目总结 阅读目录 0.前言 1.项目介绍 2.项目使用的第三方开源库 3.工具和插件介绍 4.集成友盟 5.即时通讯 6.项目总结 0.前言 本人14年12月份,从网站开发组转到了移动开发组,自己的java两年半工作经验变成了object-c零经验.2015年1月份新启动了一个移动项目,年后因为人事变动,自己从辅助开发变成了"核心"开发,目前项目基本接近尾声,下面进行总结,希望对一些人能有帮助, 另外也希望ios大牛进行指导 回到顶部 1.项目介绍 项目属于一

成长日记--记录在WB的第一个项目。

具体为什么跑去外包,只能说自己太水了,或者太懒了,都不好好投简历,也没入这个坑过,如果有想去外包的,除非钱给到市场价的1.5倍以上,否则别考虑了. 项目是国内第一做通信公司的,从具体的需求说起比较好,不,还是要从一个坑货项目经理说起,说起这个项目经理,不得不服他,测试出身,来带我们这个开发团队,开发团队里很多大牛的,HW的工作5年+三星工作3年的,HW工作10+的,ZX工作8+的,ZX工作10+的,HW工作到退休的,具体就不一一说了,反正团队的能力毋庸置疑,但是这个项目经理完全不懂开发,不知道什

[转] 从Java转iOS第一个项目总结

0.前言 本 人14年12月份,从网站开发组转到了移动开发组,自己的java两年半工作经验变成了objective-c零经验.2015年1月份新启动了一个移动 项目,年后因为人事变动,自己从辅助开发变成了"核心"开发,目前项目基本接近尾声,下面进行总结,希望对一些人能有帮助, 另外也希望iOS大牛进行指导 1.项目介绍 项目属于一款社区类软件,包含小组/帖子,视频,文章,评论,推荐搜索,即时通讯,好友,第三方登录/分享,推送等,涵盖常用app的基本功能 2.项目使用的第三方开源库 ht

django第一个项目

创建第一个项目 使用 django-admin.py 来创建 dalilala项目: django-admin.py startproject dalilala 创建完成后我们可以查看下项目的目录结构: $ cd dalilala/$ tree.|-- HelloWorld|   |-- __init__.py|   |-- settings.py|   |-- urls.py|   `-- wsgi.py`-- manage.py 目录说明: Dalilala: 项目的容器. manage.p

自我总结(六)---(学习j2ee+j2ee第一阶段项目)

自我完善的过程就是在不断的自我总结不断的改进. 学习了Struts2 Spring Hibernate. 十天前结束了这个课程.也考试了.这次考试老师说机试考的还不错.其实就是一个简单的用户登录,进行一个增删改的功能.因为实在元旦过后来就考试嘛!我是在元旦期间的时候也做了增删改的一个作业.所以在考试的时候也就快一些.但是在考试的时候也遇到一个问题,由于少导入了一个包,我的验证就不行了.我把这样写的运用到我后面的项目区就完全不行了.这是我最搞不明白的事.笔试题刚刚及格.课程结束了. 但是对于ssh

【scrapy】创建第一个项目

1)创建项目命令: scrapy startproject tutorial 该命令将在当前目录下创建tutorial文件夹 2)定义Item Items are containers that will be loaded with the scraped data;They are declared by creating a scrapy.Item class and defining its attibutes as scrapy.Field objects. import scrapy

[Asp.net MVC]Asp.net MVC5系列——第一个项目

目录 概述 创建第一个项目 添加控制器 总结 概述 本教程是个人一步一步学习的总结,希望能帮到正在进入ASP.Net MVC5方向的朋友,个人也是准备进入ASP.NET MVC5领域,虽然艰辛,但是乐此不彼.谁让咱喜欢编程呢?之前接触过ASP.NET MVC4,今天在看发现差别还是有的,不管是使用IDE创建方式,还是使用方式有些地方的确不一样了.手上也没有ASP.NET MVC5的教程,只能看着英文网站,一步一步摸索了.其实我是一直想使用mvc,可事与愿违啊,到目前还是使用的webform. 创

Cocos2dx 学习笔记整理----第一个项目

接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启动项目, 切换到解决方案视图, 然后邮件点击解决方案, 选择生成解决方案. 第一次生成根据个人机器性能会消耗大概1-3分钟,呵呵. 但是以后会快很多的. 生成成功的话会在输出窗口显示如下: 一般都会生成成功,但是我生成的时候失败了很多次,后来发现是这个问题:http://www.cnblogs.co