2

上下文:我有 3 个应用程序 A、B 和 C

每个都有views.py 和urls.py 文件

视图.py

A 有 do_Ax(request, xpto), do_Ay(request, xpto), do_Az(request, xpto)

B 有 do_Bx(request)、do_By(request)、do_Bz(request)

C 有 do_Cx(request, xpto), do_Cy(request, xpto), do_Cz(request, xpto)

urls.py 一个

urlpatterns = patterns('',
                       url(r'^A_x/$', views.do_Ax, name='A_x'),
                       url(r'^A_y/$', views.do_Ay, name='A_y'),
                       url(r'^A_z/$', views.do_Az, name='A_z'),

urlpatterns = patterns('',
                       url(r'^B_x/$', views.do_Bx, name='B_x'),
                       url(r'^B_y/$', views.do_By, name='B_y'),
                       url(r'^B_z/$', views.do_Bz, name='B_z'),

C

urlpatterns = patterns('',
                       url(r'^C_x/$', views.do_Cx, name='C_x'),
                       url(r'^C_y/$', views.do_Cy, name='C_y'),
                       url(r'^C_z/$', views.do_Cz, name='C_z'),

我的全局应用程序的入口点是通过 B。在那里,我检查了一些东西并希望使用新参数重定向到 A 或 C 视图的正确方法......有没有办法可以做到这一点?

我尝试了一种 n00b 方法,但我得到一个 SuspiciousOperation 异常(“Unsafe redirect to URL with scheme ...”)

重要提示:我还有一个名为top的“父”应用程序,它具有以下 urls.py:

urlpatterns = patterns('',
    url(r'^A/', include('apps.top.A.urls', namespace="A")),
    url(r'^B/', include('apps.top.B.urls', namespace="B")),
    url(r'^C/', include('apps.top.C.urls', namespace="C")),
)

请注意 >>>>> XPTO是一个对象!!!!不是文本值!<<<<<<<

4

2 回答 2

0
from django.core.urlresolvers import reverse
from django import shortcuts

def do_Bx(request):
    # do some tests here and whatever
    xpto = whatever
    url = reverse("A_x", args=[xpto])
    return shortcuts.redirect(url)
于 2013-02-27T12:42:20.097 回答
0

我认为您可能需要在 reverse() 调用中指定命名空间,因为您的父应用程序的 urls.py 定义了它们:

如此处所示:

url = reverse('A:A_x', args=[xpto])
于 2013-02-27T16:20:36.283 回答