可以在Django中为一个URL分配几个函数吗?

时间:2011-12-17 02:29:14

标签: python django

说我在views.py中有这些功能:

from django.shortcuts import render_to_response

def foo(request):
    a = 2
    return render_to_response('test.html', {'a': a})

def bar(request):
    b = 3
    return render_to_response('test.html', {'b': b})

这将是我的urls.py:

urlpatterns = patterns('',

(r'^test/$', views.foo, views.bar),

)

显然这不是我真正的代码,但是可以将多个视图函数分配给一个URL吗?如果是这样,我做错了什么?我是Django的新手,所以不要使用非常复杂的Django行话。

感谢您的帮助。

1 个答案:

答案 0 :(得分:7)

你的url文件背后的想法是你告诉框架为给定的URL调用什么函数。如果你给它多个功能,它将如何知道发送请求的位置?

如果您想将功能分成几个不同的功能,最简单的解决方案是创建一个调度视图,如下所示:

urls.py:

urlpatterns = patterns('',
    (r'^test/$', 'myapp.views.dispatch'),
)

views.py:

def dispatch(request):
    if something:
        return foo(request)
    else:
        return bar(request)