Django:如何动态地将url映射到视图(有或没有)网址.py

2024-05-17 09:03:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个巨大的urls.py,有很多行,比如:

url(r'^do_foo$', views.do_foo),

也就是说,url与视图中的函数名完全匹配。在

我不想创建一个以url为参数并基于性能原因找到适当方法的分派器。在

Q:

有没有办法把urls.py缩短为一行

^{pr2}$

或者完全摆脱urls.py。在


Tags: 方法函数py视图url分派参数foo
2条回答

urlpatterns变量只是Python,因此,如果可以确定要映射到url的可调用项,则可以将其自动化:

import inspect
import views

urlpatterns = [url(r'^%s$' % name, view) for name, view in views.__dict__.items()
               if callable(view) and
               inspect.getargspec(view)[0][0] == 'request']

但是在这样做之前要仔细考虑-自动公开你的所有视图作为网址可以打开你不打算公开的部分应用程序。上面的inspect argspec检查是朝着不意外打开太多的方向迈出的一小步,但我不想过于依赖它。在

每个URL末尾的$符号表示结尾处完全匹配
例如

url(r'^do_foo$', views.do_foo)

将只匹配/do\u-foo,而

^{pr2}$

将匹配
嘟嘟福/你好
doo嫒foo/abcd/bar

你可以用这个来缩小你的网址.py在

你不能摆脱网址.py完全可以,但是可以使用

可以使用将所有URL映射到同一个视图函数

^{3}$

相关问题 更多 >