2016-08-20 2 views
0

В моих моделях, я следующее:Использование URL в качестве параметра URL в Django

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

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

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

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

+0

Я бы рекомендовал передать URL-адрес в параметре GET, а не поместить его в URL-адрес. – knbk

+0

Интересно. Можете ли вы объяснить, почему? –

ответ

1

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

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

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

+1

Не должно быть '. +' Как минимум что-то требуется. –

+1

Да .. Извините, я не заметил этого вопроса. –

1

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

Смежные вопросы