Использование URL в качестве параметра URL в Django

django django-urls

77 просмотра

2 ответа

В моих моделях у меня есть следующее:

class Content(models.Model):
    address = models.URLField(unique=True)

В моих URL , у меня есть этот шаблон:

url(r'^content_detail/(?P<address>[a-zA-Z-_./:0-9-_+=?;~@#%^&*(){}|`<>]+)/$', views.content_detail),

Да, серьезно, это шаблон, который я использую. По сути, я посмотрел на все символы, которые можно использовать в URL, и создал шаблон. Теперь мой вопрос, это будет работать? Он отлично работал в моем тестировании, но я не эксперт по регулярным выражениям. Есть ли способ улучшить это? Если это возможно, может кто-нибудь дать мне регулярное выражение URL URL-адреса Django? Большое спасибо.

Автор: darkhorse Источник Размещён: 08.11.2019 11:15

Ответы (2)


1 плюс

Решение

Я думаю, что вы добавили все возможные символы, алфавиты и цифры в свой URL.

url(r'^content_detail/(?P<address>.*)/$', views.content_detail),

Это позволяет все символы в вашем URL.

Автор: Aswin Kumar K P Размещён: 20.08.2016 12:25

1 плюс

Ваше регулярное выражение не будет выполнено для IDN (интернационализированных доменных имен), содержащих символы Unicode. Я думаю, что самым простым способом было бы сопоставление, .+как написал Асвин Кумар в своем ответе, затем проверка полученного паттерна с помощью URLValidator Джанго. Вы можете найти регулярные выражения Django для URL в исходном коде этого валидатора: URLValidator

Автор: rafalmp Размещён: 20.08.2016 12:56
Вопросы из категории :
32x32