1

我有这个网址

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

我正在发送客户的凭据和客户预约的日期,我需要使用这 2 个参数进行搜索,但是,当我单击搜索按钮时出现此错误。

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

当我只发送凭证时它工作正常,但问题是当我添加日期时。

视图.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})

模型.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)

模板.html

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

1 回答 1

0

url标签正在传递位置参数,但您的 url 需要关键字参数,因此您需要更新模板:

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

第二个问题是当您确实需要传入日期时,您正在传入一个日期时间对象。要解决这个问题,首先调整您的 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})
于 2013-09-13T20:31:27.187 回答