有关BaseConverter和__init.py__的Flask问题

时间:2015-01-19 21:00:57

标签: flask

我正在尝试使用自定义Baseconverter来确保我的网址“干净”。我终于按照以下方式开始工作:

我的init.py是:

import os
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from flask.ext.openid import OpenID
from config import basedir
from slugify import slugify
app = Flask(__name__)
from werkzeug.routing import BaseConverter
class MyStringConverter(BaseConverter):
    def to_python(self, value):
        return value
    def to_url(self, values):
        return slugify(values)
app.url_map.converters['mystring'] = MyStringConverter
app.config.from_object('config')
db = SQLAlchemy(app)
lm = LoginManager()
lm.init_app(app)
lm.login_view = 'login'
oid = OpenID(app, os.path.join(basedir, 'tmp'))

from app import views, models

但是,如果我定义MyStringConverter类并在文件末尾添加app.url_map.converters['mystring'] = MyStringConverter,则会出现LookupError: the converter 'mystring' does not exist错误。这是为什么?

这是清理我的网址的正确方法吗?我不确定我是否需要对to_python()方法做任何事情,或者我是否以正确的方式进行此操作。

0 个答案:

没有答案