1

我安装Flask-FlatPages并尝试运行这个简单的应用程序(显示.md文件):

import sys
from flask import Flask, render_template
from flask_flatpages import FlatPages, pygments_style_defs

DEBUG = True
FLATPAGES_AUTO_RELOAD = DEBUG
FLATPAGES_EXTENSION = '.md'
FLATPAGES_ROOT = 'content'
POST_DIR = 'posts'

app = Flask(__name__)
flatpages = FlatPages(app)
app.config.from_object(__name__)

@app.route("/posts/")
def posts():
    posts = [p for p in flatpages if p.path.startswith(POST_DIR)]
    posts.sort(key=lambda item:item['date'], reverse=False)
    return render_template('posts.html', posts=posts)

@app.route('/posts/<name>/')
def post(name):
    path = '{}/{}'.format(POST_DIR, name)
    post = flatpages.get_or_404(path)
    return render_template('post.html', post=post)

if __name__ == "__main__":
    app.run(host='0.0.0.0', debug=True)

每当我运行该应用程序时,我都会收到此错误:

NameError:未定义名称“unicode”

引用(flask-flatpages)是这样的:

File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/flask_flatpages/__init__.py", line 290, in _pages
_walk(unicode(self.root))

我知道unicode现在str在 Python 3 中——我可以从我的应用程序中解决这个问题(不修改包)吗?

4

1 回答 1

3

好吧,如果包不支持 Python 3,那么你就不能轻易地让它工作。您可以等待支持或寻找替代包。如果唯一的问题是缺少 的定义unicode,那么它可以像猴子一样

import builtins
builtins.unicode = str

导入前flask_flatpages。但我怀疑失踪unicode是唯一的问题。

于 2014-06-25T11:17:23.717 回答