这里是《Flask 入门教程》的源码仓库。请访问本书主页在线阅读或下载电子书文件。
如果你发现了书中的错误,或是有任何意见或建议,欢迎创建 Issue 反馈或提交 Pull Request 进行修正。对于较大的内容变动,建议先创建 Issue 进行讨论。谢谢!
© 2018 李辉(Grey Li) / HelloFlask.com
本书采用 CC BY-NC-ND 3.0 协议授权,禁止商用、演绎后分发或无署名转载。
Flask 入门教程 / Flask for Beginners
Home Page: http://helloflask.com/book/3
这里是《Flask 入门教程》的源码仓库。请访问本书主页在线阅读或下载电子书文件。
如果你发现了书中的错误,或是有任何意见或建议,欢迎创建 Issue 反馈或提交 Pull Request 进行修正。对于较大的内容变动,建议先创建 Issue 进行讨论。谢谢!
© 2018 李辉(Grey Li) / HelloFlask.com
本书采用 CC BY-NC-ND 3.0 协议授权,禁止商用、演绎后分发或无署名转载。
欢迎发表你的看法~
hello,
请问,在很多程序中的视图函数中都看到 使用 flask.request来获取参数的值,名称等等操作。但是,也有看到一些是对flask的视图函数进行传参来获取参数的。例如这样:
@app.route('/goback/<int:year>')
def go_back(year):
return 'Welcome to %d!' % (2018 - year)
这两种有什么区别吗?
从第1章一路代码敲过来到第2章,发现教程中在第2章的 flask run
之前,需要在终端中键入:
$ export FLASK_APP=app.py
不然会报错:
Usage: flask run [OPTIONS]
Error: Could not locate Flask application. You did not provide the FLASK_APP environment variable.
For more information see http://flask.pocoo.org/docs/latest/quickstart/
$ flask --version
Flask 0.12.2
Python 3.6.2 |Anaconda custom (x86_64)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]
我更新到了最新版,似乎就解决了上述问题:
$ pipenv install flask==1.0.2
“目前它在 GitHub 上是 Star 数量最多的 Python Web 框架,没有之一”
大约在2021年被超了 😂
https://star-history.com/#django/django&pallets/flask&Date
地址
:https://stackoverflow.com/questions/73340344/cannot-use-module-aioflaskpython-importerror-cannot-import-name-app-ctx-st
次教程是flask3.0X版本,是需要降低flask版本吗?
尝试使用下面的工具生成 PDF 文件:
gitbook里的代码是
<div data-gb-custom-block data-tag="for"> {# 迭代 movies 变量 #}
<li>{{ movie.title }} - {{ movie.year }}</li> {# 等同于 movie['title'] #}
</div> {# 使用 endfor 标签结束 for 语句 #}
跑出来抛了500错误,看了commit后发现代码并不一致
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>{{ name }}'s Watchlist</title>
</head>
<body>
<h2>{{ name }}'s Watchlist</h2>
<p>{{ movies|length }} Titles</p>
<ul>
{% for movie in movies %}
<li>{{ movie.title }} - {{ movie.year }}</li>
{% endfor %}
</ul>
<footer>
<small>© 2018 <a href="http://helloflask.com/tutorial">HelloFlask</a></small>
</footer>
</body>
</html>
FLASK_ENV
--app
and --debug
options在Git bash中直接env\Scripts\activate
会报错command not found
,查资料后知道Git最开始是在Linux平台用的,移植到Windows上,盘符依然沿用Linux的斜杠(/),所以那个命令改成source venv/Scripts/activate
就可以正常激活虚拟环境了。
另外阅读短教程《Git 简明指南》
现在似乎无法访问。
第9章第二段代码中有个
from module_foo import sayhello
但是没有提到module_foo是什么?所以出现了错误提示 No module named 'module_foo'
在我的终端输入此命令是报错的,flask run --debugger则是OK的,不知道是不是和flask版本更新有关。
请问:我直接使用<link rel="stylesheet" href="{{ url_for('static',filename="style.css") }}" type="text/css">导入css文件,页面显示效果与教程不一致,但是我建了一个新的文件夹再把css文件放进去之后,使用<link rel="stylesheet" href="{{ url_for('static',filename="css/style.css") }}" type="text/css">引用css文件就好了,这是为什么?
太痛苦了一般教程都没讲这个
按书上代码执行测试后,提示User not define
之后尝试在最后导入User和Movie模型类后错误解除
from watchlist.models import User,Movie
不知道是我其他代码输入有误,还是书这里导入遗漏了,还请作者指正。
第五章的275行左右,user由数据库读出来后仍然是一个类,可能需要在render_template里面使用name=user.name
才能够正常显示
@app.route('/')
def index():
user = User.query.first() # 读取用户记录
movies = Movie.query.all() # 读取所有电影记录
return render_template('index.html', user=user, movies=movies)
或者修改第三章的模板格式?
第八章
login_manager.login_view = 'login'
#大小写问题?改写为Login
章节:第9章
位置:test_watchlist.py:测试认证相关功能
class WatchlistTestCase(unittest.TestCase):
# ...
# 测试登录保护
def test_login_protect(self):
response = self.client.get('/')
data = response.get_data(as_text=True)
self.assertNotIn('Logout', data)
......
这个测试用例不会通过,原因猜测可能是存在登录的缓存,我看了返回的html是登录过后的。于是我在前面加了个logout的方法,并且在这段代码前使用,即可通过测试:
def logout(self):
self.client.get('/logout')
......
def test_login_protect(self):
self.logout()
response = self.client.get('/')
data = response.get_data(as_text=True)
self.assertNotIn('Logout', data)
self.assertNotIn('Settings', data)
self.assertNotIn('<form method="post">', data)
self.assertNotIn('Delete', data)
self.assertNotIn('Edit', data)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.