【问题标题】:Django URL invalid literal for int() with base 10以 10 为基数的 int() 的 Django URL 无效文字
【发布时间】:2017-12-06 17:21:18
【问题描述】:

我在 Django 中有一个 Location 模型设置,我最初将它设置为使用主键的 URL 是 /location/3/。但客户希望将其更改为使用位置名称的 slug。我在模型中创建了一个 slug 字段。并更改了 urls.py 中的 URL 模式。

urlpatterns = [
    url(r'^(?P<pk>[\w-]+)/$', views.LocationsSingleView.as_view(), name='detail'),
]

我可以很好地链接到他们。但是当它尝试实际加载该页面时,我得到一个错误:

以 10 为基数的 int() 的无效文字:'eau-claire'

其中 eau-claire 是该位置的 slug。

Documentation 对此只字未提。

很多有这个问题的人的观点都有问题。但我的观点非常简单。所以我不知道怎么了。这是我的看法:

class LocationsSingleView(DetailView):
    model = models.Location

【问题讨论】:

    标签: python django


    【解决方案1】:

    您需要在 URL 模式中使用 slug 而不是 pk 来告诉 Django 您要通过 slug 查找。

    【讨论】:

    • 附加:pk 表示主键。
    • 很奇怪。我这样做了,我发誓以前没有用。所以我恢复使用 pk 因为在单独的模板中,使用 href="{% url 'detail' slug=location.slug %}" 对我来说很乱。不过好的,谢谢。
    猜你喜欢
    • 2013-08-04
    • 2023-03-09
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多