2013-10-16 28 views
1

我有以下網址:URL與ARGS不會反轉

urlpatterns += patterns('app_common.views_settings', 
    url(r'([\w-]+)/(\d+)/settings/$', 'settings', name="configuration_homepage"), 
    url(r'(?P<short_name>[\w-]+)/(?P<product_id>\d+)/settings/modify/(?P<sim_id>\d+)/$', 'modify_sim', name="modify_sim"), 
) 

urlpatterns += patterns('app_common.views_operator', 
    url(r'^operator/$', 'choose_operator', name="choose_operator"), 
    url(r'^(?P<short_name>[\w-]+)/project/$', 'choose_project', name="choose_project"), 
    url(r'([\w-]+)/(\d+)/$', 'set_product', name="set_product"), 
    url(r'^(?P<short_name>[\w-]+)/$', 'set_operator', name="set_operator"), 
) 

我試着使用反向配置主頁:

url = reverse('configuration_homepage', kwargs={short_name, product_id}) 
return HttpResponseRedirect(url) 

它的工作原理有些時候,但其他時間,如果失敗,這個問題(SHORT_NAME = OCI和的product_id = 1)

Exception Type: NoReverseMatch 
Exception Value: Reverse for 'configuration_homepage' with arguments '(u'1', u'OCI')' and keyword arguments '{}' not found. 

如果你們發現一些錯誤在我的代碼跌至告訴我好了......我試着給名稱給變量,但在這種情況下找不到網址。

回答

1

使用args代替kwargs

url = reverse('configuration_homepage', args=[short_name, product_id]) 
+0

我使用args = {short_name,product_id}而不是您的解決方案,因此爭議沒有在良好的順序中進行......謝謝。 –

1

kwargs是錯誤的,你傳遞一個set()代替dict()

你(可能)要的是:

url = reverse('configuration_homepage', 
       kwargs={short_name: short_name, product_id: product_id}) 

這其中的原因很多,我更喜歡dict(a=1, b=2){a:1, b:2}一個如果可能的話,

+0

事實是在我的'configuration_homepage'中,沒有變量叫做short_name或product_id。如果我在網址中添加,我然後有問題將其撤消... –