werkzeug 将 url 映射到视图(通过端点)
开始使用 werkzeug,我尝试将 url(从文件 urls.py)映射到视图(从文件夹视图,然后在不同的文件中管理不同类型的视图),我的文件夹组织如下所示:
myapp/
application.py
urls.py
views/
__init__.py
common.py
places.py
...
我的 urls.py 文件看起来像这样:
from werkzeug.routing import Map, Rule
url_map = Map([
Rule('/places', endpoint='places.overview')
])
显然我在views/places.py文件中得到了那部分:
def overview(request):
mycode...
render_template('places.html', extra...)
大多数werkzeug示例显示了使用装饰器公开将url附加到视图。对于具有 5 或 6 个 url 的应用程序来说,这很实用,但当您拥有更多 url 时,它可能会变得很糟糕...
有没有一种简单的方法可以将 url 直接映射到视图???
谢谢。
Starting using werkzeug, i try to map urls (from a file urls.py) to views (from a folder views and then in different files to manage differents kinds of view), my folder organisation looks like that :
myapp/
application.py
urls.py
views/
__init__.py
common.py
places.py
...
my urls.py files looks like that:
from werkzeug.routing import Map, Rule
url_map = Map([
Rule('/places', endpoint='places.overview')
])
and obviously i got that piece in the views/places.py file :
def overview(request):
mycode...
render_template('places.html', extra...)
Most of werkzeug examples show the utilisation of the decorator expose to attach urls to views. It's practical for an app with 5 or 6 urls but can become a hell when you got more...
Is there a simple way to map the urls directly to the views???
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是一个简化的示例:
Here is a simplified example:
端点可以是任何东西,包括函数,所以你可以跳过 Denis 示例中的 import magic
endpoint can be anything, including function, so you can just skip import magic from Denis's example
我不确定这是否是解决这个问题的首选方法(我在 werkzeug repo 中没有找到任何类似的示例,我仍然只使用这个库),但也可以简单地子类化规则:
这样您可以保留视图命名抽象层并避免使用“字符串导入”产生奇怪的魔法。
I'm not sure if it is preferred way to tackle this problem (I haven't found any similar example in werkzeug repo and I'm still only playing with this lib) but it is also possible to simply subclass Rule:
In that way you can preserve layer of view naming abstraction and avoid strange magic with 'string importing'.