2013-09-13 3 views
1

У меня есть этот URLКак отправить дату в URL

url(r'^expedienteBusqueda/(?P<credencial>\w+)/(?P<fecha>\d{4})$','ExpMedico.views.Expediente_Detalle', name='consultaexpediente'), 

Я посылаю удостоверение клиента и дату, когда клиент имел встречу, мне нужно, чтобы сделать поиск с этим 2 параметры, но, когда я нажимаю на поиск botton, я получаю эту ошибку.

Reverse for 'consultaexpediente' with arguments '(u'12335t', datetime.date(2013, 8, 21))' and keyword arguments '{}' not found. 

Он отлично работает, когда я отправляю только учетные данные, но проблема заключается в том, когда я добавляю дату.

view.py

@login_required(login_url='/InicieSesion') 
def Expediente_Detalle(request, credencial,fecha): 
    formulario = get_object_or_404(ExpedienteConsultaInicial, credencial_consultainicial=credencial and ExpedienteConsultaInicial, fecha_atencion_18=fecha) 
    detalle = ConsultasSubsecuentes.objects.filter(Consultasbc_credencial=credencial) 
    return render(request, 'ExpedienteDetalle.html', {'formulario': formulario, 'detalle':detalle}) 

models.py

class ExpedienteConsultaInicial(models.Model): 
    credencial_consultainicial = models.CharField(max_length=10, null=True, blank=True) 
    fecha_atencion_18 = models.DateField(auto_now=True, null=True, blank=True) 

template.html

<td><a href="{% url consultaexpediente post.credencial_consultainicial, post.fecha_atencion_18%}" class="btn">Ver Expediente</a></td> 
+0

Ваш Fecha только ожидает четыре цифры, но вы отправляете это целая дата. Вам нужно отформатировать дату, чтобы она соответствовала URL \ d {4} или наоборот. – jcfollower

ответ

0

url тег проходит позиционные аргументы, но ваш URL ожидает аргументы ключевых слов, поэтому вам необходимо обновить свой шаблон:

{% url 'consultaexpediente' 
     credencial=post.credencial_consultainicial, 
     fecha=post.fecha_atencion_18 %} 

Вторая проблема заключается в том, что вы передаете объект datetime, когда вам действительно нужно передать дату. Чтобы исправить это, сначала настройте URL-адрес:

r'^expedienteBusqueda/(?P<credencial>\w+)/(?P<fecha>\d{8})$' 

Теперь вам нужно пройти дату. Я установил шаблон url, чтобы ожидать 8 цифр, поэтому ваша дата должна быть 20130913 (на сегодняшний день). Это должно быть зафиксировано в вашем URL тега:

{% url 'consultaexpediente' 
     credencial=post.credencial_consultainicial, 
     fecha=post.fecha_atencion_18|date:"Ymd" %} 

Теперь, когда дата передается правильно, мы должны исправить свой код вида:

@login_required(login_url='/InicieSesion') 
def Expediente_Detalle(request, credencial, fecha): 
    date_for_search = datetime.datetime.strptime(fecha, '%Y%m%d').date() 
    formulario = get_object_or_404(ExpedienteConsultaInicial, 
       credencial_consultainicial=credencial, 
       fecha_atencion_18=date_for_search) 
    detalle = formulario.consultascubsecuentes_set.all() 
    return render(request, 
        'ExpedienteDetalle.html', 
        {'formulario': formulario, 'detalle':detalle}) 
+0

Спасибо, ваш ответ мне очень помогает. – GioBot

Смежные вопросы