Ошибка URL Django - PullRequest
       1

Ошибка URL Django

1 голос
/ 23 января 2012

Ошибка:

Реверс для 'charge_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

Когда пользователь отправляет формуошибка происходит.Я имею в виду по запросу. 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,):

Ответы [ 3 ]

0 голосов
/ 23 января 2012

Ваш URL принимает аргументы ключевого слова, но вы передаете позиционные аргументы в 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_dateclose_date) на что-то, совпадающее с вашим регулярным выражением, примерно так:

kwargs['start_date'] = "{}".format(start_date)
kwargs['close_date'] = "{}".format(close_date)
0 голосов
/ 23 января 2012

Попробуйте использовать словарь kwarg вместо позиционных аргументов.

0 голосов
/ 23 января 2012

Документация по отправке URL-адреса Django предупреждает, что:

  • "Если при импорте какой-либо из ваших функций просмотра возникнут ошибки, это приведет к ошибке reverse (), даже если эта функция просмотра не является той, которую вы пытаетесь сторнировать."
  • «Убедитесь, что любые представления, на которые вы ссылаетесь в файлах URLconf, существуют и могут быть правильно импортированы.»
  • "Не включайте строки, которые ссылаются на виды, которые вы еще не написали." -

Одной из них может быть ваша проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...