python - 没有方法名称的 Django url.py

标签 python django url url-pattern

在我的 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/

相关文章:

python - Pandas /Python : interpolation of multiple columns based on values specified for one reference column

python - 我正在使用 Hadoop 与 python 进行数据处理,应该使用什么文件格式?

python - 如何在 URL 的 python 瓶中加载静态文件

javascript - django-summernote 小部件元素的自定义 javascript 不起作用?

python - 清理用户输入以包含在 href 属性中?

javascript - 解析ajax请求,返回页面为xml

python - 如何从获得响应中制作列表

c++ - 可能的内存泄漏

javascript/jquery 下拉菜单选择不传递 GET 请求

python - DRF:“ListSerializer”类型的对象不是JSON可序列化的