【问题标题】:Regex for uuid hex value in django urlsdjango url中uuid十六进制值的正则表达式
【发布时间】:2017-10-22 02:03:41
【问题描述】:

我正在生成一个 uuid 值并希望从 django 中的 url 接收它,但我正在编写的正则表达式不起作用并告诉我找不到页面

import uuid
id = uuid.uuid4().hex
print id
be00e546822945bbb193b4ed80149c35

urls.py

​​>
urlpatterns = [
       url(r'^users/(?P<user_id>[0-9a-f]{32}\Z)/$', UserDetails.as_view(), name = 'users_detail'),
]

结果:

"GET /users/be00e546822945bbb193b4ed80149c35/ HTTP/1.1" 404 3302

那么 urls.py 中 uuid 十六进制值的正确正则表达式是什么?

【问题讨论】:

标签: python regex django django-urls uuid


【解决方案1】:

如果你想真的检查你是否有 UUID,试试这个:

[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}

我不久前在 SO 上找到了它,并用了一段时间来检查数据是否实际上是正则表达式。没有直接用过Django URLS,不过我觉得应该没问题。

【讨论】:

    【解决方案2】:
    urlpatterns = [
       url(r'^users/(?P<user_id>[^/]+)/$', UserDetails.as_view(), name = 'users_detail'),
    ]
    

    【讨论】:

    • 请注意,[^/]+ 将匹配除/ 之外的任何字符,因此它也将匹配users/------/
    猜你喜欢
    • 2010-10-20
    • 2019-04-25
    • 2011-10-03
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    • 2012-07-12
    • 2014-05-18
    相关资源
    最近更新 更多