Шаблон URL Джанго, чтобы соответствовать UUID - PullRequest
0 голосов
/ 23 июня 2018

Я использую Django 1.11. Я пытаюсь получить шаблон URL, соответствующий UUID, но он не работает. Я пробовал более 3 раз, но все еще получаю сообщение об ошибке:

Используя URLconf, определенный в eMarket.urls, Django попробовал эти URL узоры, в следующем порядке:
http://127.0.0.1:8000/view/49c26740-2211-4cc9-971b-5ff62ddc2e0e/

urlpatterns = [
    url(r'^view/(?P<slug>\b[0-9A-Fa-f]{8}\b(-\b[0-9A-Fa-f]{4}\b){3}-\b[0-9A-Fa-f]{12}\b)$', viewProduct, name="view"),
    url('admin/', admin.site.urls),
]

Ответы [ 3 ]

0 голосов
/ 23 июня 2018

Не могли бы вы использовать собственный преобразователь пути django UUID вместо попытки вручную создать регулярное выражение?

0 голосов
/ 23 июня 2018

Единственное, что я могу себе представить, это может вызвать проблемы с распознавателем URL: вы используете группу захвата в вашей именованной группе slug.Таким образом, Django получит полное совпадение плюс 2 группы, которые могут избежать правильного разрешения URL.Вы можете проверить это быстро на regex101

enter image description here

При использовании группы без захвата (?:) для повторяющегося шаблона, он вернет только названную группу захвата - снова на regex101

enter image description here

Итак, вы можете попробовать (?P<slug>[0-9A-Fa-f]{8}(?:-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12}) - потому чтокроме этого, я не вижу никаких проблем в вашем urlpattern.

0 голосов
/ 23 июня 2018
import re

url = "http://127.0.0.1:8000/view/49c26740-2211-4cc9-971b-5ff62ddc2e0e/"

m = re.search("(?P<slug>[0-9A-Fa-f]{8}(-[0-9A-Fa-f]{4}){3}-[0-9A-Fa-f]{12})", url)
print(m.group(0))

gives:
49c26740-2211-4cc9-971b-5ff62ddc2e0e
...