python 创建flask项目方法
Flask是一个基于Python的web框架,它的设计目的是提供Web开发所需的最小功能子集。
Flask与别的框架(尤其是采用其他编程语言的框架)的不同之处在于:它没有绑定诸如数据库查询或者表单处理等功能库,以及它们所组成的整个生态系统。它倾向于对这些功能的实现方式不做任何限定。
这种系统带来的主要好处是:开发者能够使用他们想用的任何方式和工具,去设计他们的应用架构。另外,对于一些常见的通用功能,Flask没有以某种特定方式去实现,这意味着在Flask中,对标准库的使用会比其他框架里多,这保证了通用功能的稳定性及针对其他Python程序员的可读性。由于Flask社区十分庞大,所以该社区提供的添加通用功能的方式非常多。所以通过本系列教程,了解它们如何帮助我们避免重复造轮子。这些扩展的妙处在于,如果不需要那些额外的功能,就不用引入它们,这样我们的应用才会保持简洁、轻量。
这种系统的最大弊端是,大部分新的Flask用户不知道如何正确地规划大型应用的结构,最后弄出一大堆让人难以理解和维护的代码。所以本教程另一个重点是如何为Flask应用创建模型/视图/控制器(MVC)架构。
MVC体系在最初被发明时,主要用来设计桌面应用的用户界面。它将数据处理(model),交互逻辑(controller)和用户界面(view)隔离成三层不同的组件。
这三层组件的隔离,使得程序员不用为每个网页重新实现一遍相同的功能,而是只要重用那些代码。比如,若是没有把处理数据的代码拆分到单独的函数中,那么我们不得不在每个页面的渲染函数里,把同样的数据库连接代码和SQL查询代码都写一遍。
我们将使用git做为版本控制软件,开发环境为ubuntu.python版本为3.4.3
安装flask
使用pip安装,由于是在python3环境中,所以使用pip3.
pip3 install flask
使用git做版本管理
创建工程目录
mkdir flask_tutorials
切换到工程目录
cd flash_tutorilas
初始化版本库
git init
创建版本库过滤文件
touch .gitignore
向.gitignore文件中写入以下内容,过滤env目录,python的编译文件:
cat .gitignore
env/
*.pyc
开始我们的项目
config.py:
class Config(object):
pass
class ProdConfig(Config):
pass
class DevConfig(Config):
DEBUG = True
main.py:
from flask import Flask
from config import DevConfig
app = Flask(__name__)
app.config.from_object(DevConfig)
@app.route('/')
def home():
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run()
对于一些了解Flask API的读者来说,这个程序非常基础,它只是在我们访问http://127.0.0.1:5000的时候,在浏览器中显示一行"Hello World!"。另外,Flask用户可能很不熟悉的一个地方是,这里使用了config.from_object,而不是app.confing['DEBUG']。使用from_object是因为未来我们会加入很多配置项,如果要在不同的配置之间切换,那么手动去改每个变量是一件烦琐乏味的事。
提交我们的代码
git add --all
git commit -m "your comment"
启动web服务
zhangxa@ubuntu:~/python/flask_tutorials$ python3 main.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 267-148-615
使用flask-script
Flask有众多扩展,我们将首先使用Flask Script扩展。使用它可以创建命令,并在Flask的应用上下文中执行,因为这样才能对Flask对象进行修改。
Flask Script自带了一些默认的命令,可以运行服务器或者开启带应用上下文的Python命令行。
安装
pip3 install flask-script
使用
先创建一个简单的manage.py脚本。
manage.py:
首先,导入Flask Script对象,代码如下:
from flask_script import Manager, Server
from main import app
然后把你的app传给Manager对象,以初始化Flask Script:
manager = Manager(app)
现在我们来添加一些命令。这里运行的服务器跟通过main.py运行的普通开发服务器是一样的。make_shell_context函
数会创建一个Python命令行,并且在应用上下文中执行。返回的字典告诉Flask Script在打开命令行时进行一些默认
的导入工作。
manager.add_command("server", Server())
@manager.shell
def make_shell_context():
return dict(app=app)
通过manage.py运行命令行在将来会十分必要,因为一些Flask扩展只有在Flask应用对象被创建之后才会被初始化。直接
运行默认的Python命令行会令这些扩展返回错误。
然后,在文件结尾添加如下代码,这是Python的标准方式,用来限制仅在用户直接运行文件的时候,才执行上面的
代码:
if __name__ == "__main__":
manager.run()现在你可以这样来运行开发环境服务器:Z:\python\flask_tutorials>python manage.py server * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger pin code: 273-062-909以及使用命令行Z:\python\flask_tutorials>python manage.py shell#我们来看下app有没有被正确导入>>> app<Flask 'main'>>>>
总结
现在我们已经搭建了开发环境,可以继续在Flask里面实现更高级的特性了。
---------------------
python 创建flask项目方法的更多相关文章
- pycharm创建Flask项目,jinja自动补全,flask智能提示
pycharm创建Flask项目,jinja自动补全,flask智能提示 之前一直都是用在idea里创建空项目然后导入,之后就没有各种的智能提示,在选择文类,选择模板之类的地方就会很麻烦. 步骤1:用 ...
- Web开发入门教程:Pycharm轻松创建Flask项目
Web开发入门教程:Pycharm轻松创建Flask项目 打开Pycharm的file,选择创建新的项目,然后弹出对话框,我们可以看到里面有很多的案例,Flask.Django等等,我们选择生成Fla ...
- python web开发之flask框架学习(1) 创建flask项目
python 开发越来越火,作为菜鸟,也应该学习一下,感觉还可以,记录下来,方便学习参考. 不管做什么开发首先肯定是安装环境,这里我用的是pycharm,python3.如果不清楚怎么安装环境可以去网 ...
- Python框架 Flask 项目实战教程
本文目的是为了完成一个项目用到的flask基本知识,例子会逐渐加深.最好对着源码,一步一步走.下载源码,运行pip install -r requirements.txt 建立环境python db_ ...
- Python之Flask项目开发【入门必学】
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:藤藤菜丶 Flask 安装Flask模块 创建一个Flask项目 运行 ...
- 使用python创建cocos2d-x项目
已准备条件: 已安装vs2012,已下载cocos2d-x sdk 2.2.3包. 旧版本号使用包里面的模板创建项目,如今新的包,使用python 来创建 1.下载安装 python https ...
- python创建Django项目
创建Django项目 关注公众号"轻松学编程"了解更多. 创建一个HelloDjango项目 GitHub地址:https://github.com/liangdongchang/ ...
- python——创建django项目全攻略(野生程序员到家养程序员的完美进化)
新建工程 我用pycharm写代码,所以一般就用pycharm创建django工程.右上角File-New Project.选择路径,修改项目名称,确定.就可以创建一个新的django工程. ...
- python创建数组的方法
一 直接定义法: 1.直接定义 matrix=[0,1,2,3] 2.间接定义 matrix=[0 for i in range(4)] print(matrix) 二 Numpy方法: Numpy内 ...
随机推荐
- python面向对象之 类的关系
内容梗概: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系, self到底是什什么鬼? 4. 类中的特殊成员 1. 依赖关系def:在方法中给方法传递一个对象. 此时类与类之间 ...
- 简单记录下3PC
三PC分为三个阶段:CanCommit,PreCommit, DoCommit 整个分布式系统中,有一个组织者,其他属于参与者,当一个组织者挂了,会从其他可用site中选一个组织者出来,降低阻塞,避免 ...
- QPS 机器计算公式
QPS = req/sec = 请求数/秒 QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数 原理:每天80%的访问集中在20%的时间里,这20%时间 ...
- 11. Container With Most Water C++
知识点:双指针遍历大大减少不必要的比较和计算 方法1:Brute Force(执行时间惨不忍睹,共进行n(n-1)/2次比较) class Solution { public: int maxArea ...
- CompareTo 基于的排序算法
CompareTo 基于的排序算法(高级排序) 这个是今天学习MapReduce时发现的,自定义类后实现了WritableComparable<>接口后实现了接口中的compareTo方法 ...
- 安天透过北美DDoS事件解读IoT设备安全——Mirai的主要感染对象是linux物联网设备,包括:路由器、网络摄像头、DVR设备,入侵主要通过telnet端口进行流行密码档暴力破解,或默认密码登陆,下载DDoS功能的bot,运行控制物联网设备
安天透过北美DDoS事件解读IoT设备安全 安天安全研究与应急处理中心(安天CERT)在北京时间10月22日下午启动高等级分析流程,针对美国东海岸DNS服务商Dyn遭遇DDoS攻击事件进行了跟进分析. ...
- Qt 设置窗口居中显示和窗体大小
设置窗口居中显示 方法一:在窗口(QWidget类及派生类)的构造函数中添加如下代码: #include <QDesktopWidget> //....... QDesktopWidget ...
- 关于Object.prototype.toString.call
slice(8,-1)意思是从第8位开始(包含第8位)到最后一位之前(-1的意思就是最后一位,不包含最后一位): Object.prototype.toString.call(boj)这个是用来判断数 ...
- Javascript this 的一些总结
1.1.1 摘要 相信有C/C++.C#或Java等编程经验的各位,对于this关键字再熟悉不过了.由于Javascript是一种面向对象的编程语言,它和C/C++.C#或Java一样都包含this关 ...
- JAVA的环境变量配置(方式二)
1.想要成功配置Java的环境变量,那肯定就要安装JDK(JDK安装包在方式一中),才能开始配置的. 2.安装JDK 向导进行相关参数设置.如图: 3.正在安装程序的相关功能,如图: 4.选择安装的路 ...