2013-02-27 51 views
2

上下文:我已3個應用 A,B和CDjango的重定向通過一個(或多個)對象(一個或多個)作爲參數(多個)

每一個具有views.py和urls.py文件

views.py

A具有do_Ax(請求,xpto),do_Ay(請求,xpto),do_Az(請求,xpto)

B具有do_Bx(請求),do_By(請求),do_Bz(請求)

C具有do_Cx(請求,xpto),do_Cy(請求,xpto),do_Cz(請求,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'), 

Ç

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.在那裏,我檢查一些東西,並希望REDIRECT A或C視圖的正確方法與新的參數... 有沒有一種方法,我可以做到這一點?

我試過的n00b的做法,但我得到一個SuspiciousOperation異常(「不安全重定向與方案網址...」)

重要: 我也擁有頂部 AA「父」應用程序命名以下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是一個對象!!!!不是一個文本的價值! < < < < < < < <

回答

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) 
+0

我在編輯你的答案..我接近你的方法,會試一試。 THANKs :) – 2013-02-27 12:43:54

+0

我得到一個錯誤... – 2013-02-27 12:56:18

+1

Django似乎找不到A(或C)應用程序......它似乎很簡單,但我沒有完成這個..順便說一下A,B和C都是頂部的「孩子」應用程序和所有3個相同的「級別」 – 2013-02-27 12:57:51

0

我想你可能需要指定反向()調用的命名空間,因爲你的父應用程序的urls.py將它們定義:

可以看出here

url = reverse('A:A_x', args=[xpto])