gpt4 book ai didi

django - Django 中的 NoReverseMatch

转载 作者:行者123 更新时间:2023-12-04 22:52:52 26 4
gpt4 key购买 nike

调试了一段时间后,我发现了错误是什么,但我不知道如何修复它。

  • 我有一个名为“ver_caja”的 urlConf ' 谁接收一个 caja 对象的 id 作为参数,然后调用泛型 object_detail .
  • 查询集是正确的:正确获取所有 caja 对象。
  • 在模板中,我有电话:{% ver_caja caja.id %}
  • 对象 caja被模板正确接收。
  • 我正在使用 MySQL。

  • 问题是 caja.id有值 “1L”而不是“1” .

    1L引发错误,因为 urlconf ( ver_caja ) 等待整数而不是字母数字 ' <int>L '。

    我在 django 文档站点中获得的所有信息都是这个(作为教程中的一个例子),它没有帮助:
    ...

    >>> p = Poll(question="What's up?", pub_date=datetime.datetime.now())

    # Save the object into the database. You have to call save() explicitly.
    >>> p.save()

    # Now it has an ID. Note that this might say "1L" instead of "1", depending
    # on which database you're using. That's no biggie; it just means your
    # database backend prefers to return integers as Python long integer
    # objects.
    >>> p.id

    ...

    那么,我该如何解决这个问题才能收到 caja.id=1而不是 caja.id=1L ?

    提前致谢。

    佩德罗

    编辑:在这里,您拥有所有文件。

    模板错误:

    Caught an exception while rendering: Reverse for 'ver_caja_chica' with arguments '(1L,)' and keyword arguments '{}' not found.



    caja/models.py
    class Caja(models.Model):
    slug = models.SlugField(blank=True)
    nombre = models.CharField(max_length=20)
    saldo = models.DecimalField(max_digits=10, decimal_places=2)
    detalle = models.TextField(blank=True, null=True)

    # apertura
    fechahora_apert = models.DateTimeField(default=datetime.datetime.now, auto_now_add=True)
    usuario_apert = models.ForeignKey(Usuario, related_name=u'caja_abierta_por', help_text=u'Usuario que realizó la apertura de la caja.')

    # cierre
    fechahora_cie = models.DateTimeField(blank=True, null=True)
    usuario_cie = models.ForeignKey(Usuario, null=True, blank=True, related_name=u'caja_cerrada_por', help_text=u'Usuario que realizó el cierre de la caja.')

    def __unicode__(self):
    return u'%s, $%s' % (self.nombre, self.saldo)

    class Meta:
    ordering = ['fechahora_apert']


    class CajaChica(Caja):
    dia_caja = models.DateField(default=datetime.date.today, help_text=u'Día al que corresponde esta caja.')
    cerrada = models.BooleanField(default=False, help_text=u'Si la caja está cerrada no se puede editar.')

    caja/urls.py
    cajas_chicas = {
    'queryset': CajaChica.objects.all(),
    }

    urlpatterns = patterns('',
    url(r'^$', 'django.views.generic.list_detail.object_list', dict(cajas_chicas, paginate_by=30), name="lista_cajas_chicas"),
    url(r'^(?P<object_id>\d+)/$', 'django.views.generic.list_detail.object_detail', dict(cajas_chicas, ), name="ver_caja_chica"),
    )

    cajachica_list.html
    ...
    <table>
    {% for obj in object_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
    <td>{{ obj.nombre|capfirst }}</td>
    <td>{{ obj.fechahora_apert|timesince }}</td>
    <td>{{ obj.usuario_apert }}</td>
    <td>{{ obj.saldo }}</td>
    <td><a href="{% url ver_caja_chica obj.pk %}">Ver / Editar</a></td>
    </tr>
    {% endfor %}
    </table>
    ...

    编辑 2
    使用错误的 urlconf(故意),这些是此应用程序的 url:
    ... 
    4. ^caja/$ ^$
    5. ^caja/$ ^(?P<object_id>\d+)/$
    ...

    也许最终的 url 是由 django 构建的。

    这些 url 位于 caja/urls.py 中,并且包含在项目根目录中的 urls.py 中。

    有什么线索吗?

    最佳答案

    您确定您确实已将此 URL 配置连接到您的主要 URL 配置吗?

    在您项目的 urls.py ,确保你有类似的东西:

    urlpatterns = patterns('',
    #...
    url(r'^cajas/', include('caja.urls')),
    )

    关于django - Django 中的 NoReverseMatch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779463/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com