2012-01-23 78 views
1

錯誤:Django的URL錯誤

反向關於 'charges_report' 與參數 '(u'rtcl',datetime.date(2012,1,3),datetime.date(2012,1,4)中,u」 ')'和關鍵字參數'{}'未找到。

在我的urls.py

url(r'^charges_report/(?P<company_name>[\s\w\d-]+)/(?P<start_date>[\s\w\d-]+)   /(?P<close_date>[\s\w\d-]+)/(?P<batch_no>[\s\w\d-]+)/$', 
           'admin.reports.views.charges_report', 
           name='charges_report'), 

,並在POST

我的窗體視圖當用戶提交形成的錯誤發生。我的意思是在request.POST,這裏是窗體的代碼提交

 if request.POST: 
     company_form = CompanyForm(request.POST, request=request) 

     if company_form.is_valid(): 
      company_name = company_form.cleaned_data['company_name'] 
      start_date = company_form.cleaned_data['start_date'] 
      close_date = company_form.cleaned_data['close_date'] 
      batch_no = company_form.cleaned_data['batch_no'] 


     #if 'immigration_charges' in request.POST: 

     return  HttpResponseRedirect(reverse('charges_report',args=[company_name, start_date, close_date, batch_no])) 

的意見

def charges_report(request, company_name, start_date, close_date, batch_no=None,): 
+0

我不理解你的問題。你是說當你用某個URL調用你的應用時,Django會給出一個錯誤「keyword arguments'{}'not found」?你能給我們確切的測試用例和確切的錯誤信息文本嗎? –

+0

我有一個名爲charges_report的URL,它需要4個參數。這4個參數來自於窗體。當用戶從表單中提交這4個四參數時,將重定向到charges_report。現在如果用戶沒有提供最後一個參數(最後一個參數是可選的),那麼我得到錯誤。 – Asif

+0

哪部分代碼觸發了錯誤?確切的錯誤消息文本可能會包含一個堆棧跟蹤,它會告訴錯誤發生在哪裏。 –

回答

0

您的網址正在使用關鍵字參數,但您在reverse中傳遞位置參數。

嘗試:

kwargs = dict() 
    kwargs['company_name'] = company_name 
    kwargs['start_date'] = start_date 
    kwargs['close_date'] = close_date 
    kwargs['batch_no'] = batch_no 
    return HttpResponse(reverse('charges_report',kwargs=kwargs)) 

您還需要格式化您的日期,以配合您的URL模式正則表達式。現在,您正在傳遞字符串datetime.date(2012, 1, 3)作爲start_date

變化start_date(和close_date)的東西,符合你的正則表達式,像這樣:

kwargs['start_date'] = "{}".format(start_date) 
kwargs['close_date'] = "{}".format(close_date) 
+0

仍然我得到相同的錯誤相反的'charges_report'參數'()'和關鍵字參數'{'start_date':datetime.date(2012,1,1),'close_date':datetime.date(2012,1 ,31),'batch_no':u'','company_name':u'rtcl'}'找不到。 – Asif

0

Django URL dispatch documentation警告說:

  • 「如果有,同時導入任何任何錯誤你的視圖函數,它會導致reverse()引發一個錯誤,即使這個視圖函數不是你想要反轉的那個。「
  • 「確保您在URLconf文件中引用的任何視圖都存在,並且可以正確導入。」
  • 「不要包含引用您尚未編寫視圖的行。」 -

其中之一可能是您的問題。

+0

我有一個名爲charges_report的URL,它需要4個參數。這4個參數來自於窗體。當用戶從表單中提交這4個四參數時,將重定向到charges_report。現在如果用戶沒有提供最後一個參數(最後一個參數是可選的),那麼我得到錯誤。 – Asif

0

嘗試使用kwarg字典而不是位置參數。