在我的 Django 项目中,我的 url.py 模块看起来像这样:
urlpatterns = patterns('',
(r'^$', 'web.views.home.index'),
(r'^home/index', 'web.views.home.index'),
(r'^home/login', 'web.views.home.login'),
(r'^home/logout', 'web.views.home.logout'),
(r'^home/register', 'web.views.home.register'),
)
有没有办法简化这个,这样我就不需要为我认为的每个方法都添加一个条目?像这样的东西会很好:
urlpatterns = patterns('',
(r'^$', 'web.views.home.index'),
(r'^home/(?<method_name>.*)', 'web.views.home.(?P=method_name)'),
)
更新
现在我至少知道一种方法,是否推荐这种方法?或者是否有充分的理由为每个单独的方法显式创建映射?
最佳答案
您可以将基于类的 View 与调度程序方法结合使用:
class MyView(object):
def __call__(self, method_name):
if hasattr(self, method_name):
return getattr(self, method_name)()
def index(self):
...etc...
你的 urls.py 看起来像这样:
from web.views import MyView
urlpatterns = patterns('',
(r'^$', 'web.views.home.index'),
(r'^home/(?<method_name>.*)', MyView()),
)
关于python - 没有方法名称的 Django url.py,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3106992/