开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
Flask 教程,第一部分:Hello,World! - 技术翻译 - 开源中国社区

Flask 教程,第一部分:Hello,World! 【已翻译100%】

oschina 推荐于 5年前 (共 12 段, 翻译完成于 12-30) 评论 39
收藏  
280
推荐标签: Flask 待读

这是我用Python的轻量级框架 Flask 编写web程序时的一些经验,我将它记录在此,本篇是一系列文章中的第一篇。

下面是这个系列中已经发布的文章的目录:

铂金小鸟
 翻译得不错哦!

我的背景:

我是个用多种语言开发复杂程序有超过10+年经验的码农,一开始我工作时学习Python来写C++库的Python接口。

除了Python,我还用PHP, Ruby, Smalltalk来写Web app,不管你信不信,我还用C++写web app,反正我是信了。所有这些东西中,我觉得Python+Flask是最灵活的.

lanybass
 翻译得不错哦!

应用

作为这个教程的一部分,我即将要开发一个专门用于发送微博服务的应用,我叫它微博(无聊的名字),相当给力,我当然知道,哈!

我在开发这个应用的过程中会涉及到如下几个话题:

  • 用户管理,包括登录管理,会话,用户角色,个人档案及用户头像。
  • 数据库管理,包括数据库迁移处理。
  • Web表单支持,包括字段检验和用于防止垃圾邮件的验证码功能。
  • 大数据的分页功能。
  • 全文检索。
  • 用户邮件通知。
  • HTML和RSS模板。
  • 多语言支持。
  • 缓存和其它性能优化。
  • 用于开发和生产环境服务器上的调试技术。
  • 生产环境服务器上的部署安装。

正如你所看到的,整个过程我将花费不少精力。我希望这个应用,当它开发完成后,将作为一种编写其它web应用的模板。

铂金小鱼
 翻译得不错哦!

要求

如果你拥有一台运行着Python 2.6或者2.7的电脑那么你可以很好的进行下去。这个教程应用应该可以刚刚好地运行在Windows,OS X和Linux上。

教程假设你熟练终端窗口(对于Windows用户就是命令行提示CMD)以及了解你的操作系统上基本的命令行文件管理函数。如果不是这样,在继续我们的教程之前,那么我推荐你去学一下怎么创建目录,复制文件等操作,要利用命令得哦,亲!

最后,你应该对于编写Python代码有点感觉,不要太菜。对于Python模块和包这一块要熟悉是必须的。

铂金小鱼
 翻译得不错哦!

安装Flask

废话少说,开始吧!

如果你还没准备好,去安装Python 2.7吧。

现在我们必须要安装Flask和服务端扩展,这些都是我们即将要用到的。我偏爱的方式是创建一个虚拟环境,所有东西都已经安装在这个虚拟环境中了,因此你自已主要的Python安装环境则不会受影响。附加的一个好处是,用这种方式来安装时不需要root管理员权限。

好了,打开终端窗口,选择一个位置用来落脚我们的应用,并且在此创建一个新目录,这个目录就叫作microblog。

下一步,下载virtualenv.py,并且把它放进这个新目录。

敲下以下命令行,用来创建一个虚拟环境:

python virtualenv.py flask
上面的命令在flask目录里面创建一个完整的Python环境。
铂金小鱼
 翻译得不错哦!

虚拟环境可以是激活的,也可以是失效的。如果你希望的话,可以将 flask 的 bin 目录路径加到系统环境变量 path 的后面。这样就使虚拟环境为激活的,当你在终端输入 python 命令时,你将看到的是环境的版本信息而不是 python 的版本信息。我个人不喜欢这种特性,所以我从来不激活我的环境参数,就只是写它的完整路径来进行调用。

如果你的环境是 Linux,OS X or Cygwin,使用以下命令安装 flask 和 扩张包,按顺序一个接一个:

flask/bin/pip install flask
flask/bin/pip install flask-login
flask/bin/pip install flask-openid
flask/bin/pip install flask-mail
flask/bin/pip install flask-sqlalchemy
flask/bin/pip install sqlalchemy-migrate
flask/bin/pip install flask-whooshalchemy
flask/bin/pip install flask-wtf
flask/bin/pip install flask-babel
flask/bin/pip install flup

如果你的是 Windows 环境,那么命令有点不同:

flask\Scripts\pip install flask
flask\Scripts\pip install flask-login
flask\Scripts\pip install flask-openid
flask\Scripts\pip install flask-sqlalchemy
flask\Scripts\pip install sqlalchemy-migrate
flask\Scripts\pip install flask-whooshalchemy
flask\Scripts\pip install flask-wtf
flask\Scripts\pip install flask-babel
flask\Scripts\pip install flup

这些命令会下载和安装我们应用中所需要的包。

DustLeon
 翻译得不错哦!

关于SQLAlchemy,需要注意:SQLAlchemy v0.8 并不兼容之前的一些版本。尤其是sqlalchemy-migrate模块无法和v0.8一起使用。所以我们需要强制安装v0.7.9,命令如下:

flask/bin/pip uninstall sqlalchemy
flask/bin/pip install sqlalchemy==0.7.9

等sqlalchemy-migrate更新到支持SQLAlchemy v0.8的时候再使用吧。

Windows用户需要多一个步骤。如果你善于观察,你会注意到上一段中的windows环境包安装命令并没安装flask-mail包,因为它在windows上安装时默认会附带一些其他包,所以我们使用另一个命令来解决:

flask\Scripts\pip install --no-deps lamson chardet flask-mail
关于这个问题,我不会进入细节,如果你想要了解更多,请参考flask-mail的官方文档。

如果你成功安装完了所有包,那你可以删除virtualenv.py了(译者注:这个是作者的个人喜好,可以不用删),因为我们不再需要它了。


lanybass
 翻译得不错哦!

通过Flask创建 "Hello, World"

现在在你的微博文件夹下有一个flask字文件夹,它被加入了一段Python注释,而且我们将在App应用中使用Flask框架和它的扩展。现在让我们来写我们的第一个web应用吧。

在你通过cd命令行进到微博文件夹下后,让我们来创建我们应用的文件结构:

mkdir app
mkdir app/static mkdir app/templates
mkdir tmp

我们将把应用的包存放在这个app文件夹下。这个静态子文件件夹我们用来放诸如图片、JS或者CSS之类的文件,而template子文件夹则明显用于存放template文件的。

Jasonhoho
 翻译得不错哦!

现在让我们来给我们的app包创建一个简单的初始化脚本(app/__init__.py)。

from flask import Flask app = Flask(__name__) from app import views

上面的这段简单的脚本创建了Flask类的应用对象然后导入我们还没写的views视图模块。

这个模块相当于一个执行者来返回用户的web请求。在Flask中,视图一般会被作为Python写出,每一个视图映射一个或者多个URL

Jasonhoho
 翻译得不错哦!

下面让我们来写第一个视图功能(app/views.py):

from app import app @app.route('/') @app.route('/index') def index

这个视图非常的简单,它仅仅就是返回一个string语句,先后显示在用户的web浏览器上。功能上的两条路径连接这从urls/and/index到这个功能的映射。

下面,使web应用能完全运行的最后一步就是创建一个能启动我们开发的这个应用web服务器的脚本。我们叫它scriptrun.py。

#!flask/bin/python from app import app
app.run(debug = True)

这段脚本只是从我们的app包中导入了app的变量,然后调用它的方法来启动服务器。记住,这个变量保存着我们上面创建的Flask实例。

Jasonhoho
 翻译得不错哦!
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们
评论(39)
Ctrl/CMD+Enter

先上班,后面再来。。。
好赞,跃跃欲试了~~
原文作者果然是个不择不扣的码农。。非常自我且思维跳跃
上面那个fileapp/__init__.py,fileapp什么地方来的?是不是app?
我看成是flash了。。。。。
jetbrains pycharm 就带的 flask 框架 我也是昨天看的 谁知道今天就介绍了 你 官方有 使用视频 喜欢的 可以试试
貌似已经先后看到四个人翻译同一个东西了……
http://docs.torriacg.org/docs/flask/
https://flask-cn.readthedocs.org/en/latest/
https://dormousehole.readthedocs.org/en/latest/
python 代码不加缩进已经很蛋疼了,不换行直接亮瞎双眼。
好东西,用起来很给力。
学习学习
学习
学习。谢谢楼主的文章
好东西,感谢楼主。
感谢,但请把代码的排版弄好一些。:)
有些地方如
“fileapp/__init__.py)。“
“urls/and/index到这个功能的映射。”
翻译的不是很好。
The two route decorators above the function create the mappings from urls / and /index to this function.
在函数上面的2个路由装饰器负责映射URL "/" 和"/index" 到这个函数。
下面让我们来写第一个视图功能(fileapp/views.py):
from app import app @app.route('/') @app.route('/index') def index

这个地方少了一句 return "Hello, World!"
下面,使web应用能完全运行的最后一步就是创建一个能启动我们开发的这个应用web服务器的脚本。我们叫它scriptrun.py。

The final step to have a fully working web app is to create a script that starts up the development web server with our application. Let's call this script "run.py".

= =
恕我直言,你不是拿机器翻译的吧。
瞎了我的狗眼..我还以为是一个人翻的..才知道原来是每个人可以分段选择翻译的。
我错了我错了我错了。。

引用来自“郑诚”的评论

恕我直言,你不是拿机器翻译的吧。

111

引用来自“郑诚”的评论

瞎了我的狗眼..我还以为是一个人翻的..才知道原来是每个人可以分段选择翻译的。
我错了我错了我错了。。

呵呵,哥们你是激动啥,译者都不急!
顶部