【问题标题】:How to access a Django UpdateView with using a uuid as slug如何使用 uuid 作为 slug 访问 Django UpdateView
【发布时间】:2021-11-07 15:47:58
【问题描述】:

我想知道如何通过使用 uuid 作为 slug 来访问 UpdateView。所以我的目标是一个类似的网址

http://myapp.example.de/edit/7efdbb03-bdcf-4b8a-85dd-eb96ac9954fd

我已经定义了这样的视图:

class DeviceEventUploadView(UpdateView):

    model = Event
    slug_url_kwarg = 'uuid_slug'
    slug_field = 'unique_id' 

和 urls.py 像这样:


urlpatterns = [
    path('admin/', admin.site.urls),
    path('edit/<uuid:uuid_slug>',
        DeviceEventUploadView.as_view(),
        name='event_update'),
]

我来了:


Using the URLconf defined in myproject.urls, Django tried these URL patterns, in this order:

    admin/
    ^edit/<uuid:uuid_slug> [name='event_update']

The current path, edit/7efdbb03-bdcf-4b8a-85dd-eb96ac9954fd/, didn’t match any of these.

我的思考失败在哪里?

【问题讨论】:

  • 您忘记关闭&lt;uuid:uuid_slug&gt;。它需要一个右尖括号&gt;。此外,这是path 语法。
  • @WillemVanOnsem 嗯。我想我现在已经发现了这个问题。测试时,结尾 / 仍然存在于 URL 中。没有它似乎工作。敬请期待;)
  • @frian: 是的,通常路径应该以斜杠结尾,有一个名为 APPEND_SLASH 的 Django 设置,如果为 true,将首先查找 url,如果没有结束,则附加一个斜杠使用斜线,然后尝试再次查找 URL。
  • 感谢提示
  • 我认为标题应该说“slug”而不是“slag”哈哈

标签: django updateview


【解决方案1】:

您忘记关闭&lt;uuid:uuid_slug&gt;。它需要一个右尖括号&gt;。此外,这是path 语法。因此,您可以这样定义:

path(
    'edit/<uuid:uuid_slug>/',
    DeviceEventUploadView.as_view(),
    name='event_update'
),

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2018-02-12
    • 2020-12-15
    • 2012-03-05
    • 1970-01-01
    • 2015-10-17
    • 2018-12-30
    • 2018-03-30
    • 1970-01-01
    相关资源
    最近更新 更多