Парсинг URL Django - передает необработанную строку

Я пытаюсь передать 'строковый' аргумент представлению с URL. urls.py идет

('^add/(?P<string>\w+)', add ),

У меня есть проблемы со строками включая пунктуацию, новые строки, пробелы и так далее. Я думаю, что должен изменить \w + во что-то еще. В основном строка будет чем-то скопированным пользователем из текста его выбора, и я не хочу изменять его. Я хочу принять любой символьный и специальный символ так, чтобы представление действовало точно на то, что скопировал пользователь.

Как я могу изменить его?

Спасибо!

5
задан user375348 25 June 2010 в 11:52
поделиться

2 ответа

Ну, во-первых, есть много символов, которые запрещены в URL. Для начала вспомните ? и пробелы. Django, вероятно, предотвратит передачу этих символов в ваше представление, что бы вы ни делали.

Во-вторых, вам стоит почитать о модуле re. Именно он задает синтаксис для этих совпадений URL. \w означает любую заглавную или строчную букву, цифру или _ (в основном, символы идентификатора, за исключением того, что он не запрещает ведущую цифру).

Правильным способом передачи строки в URL является передача в качестве параметра формы (т.е. после ?paramName= в URL, и с экранированием специальных символов, таких как пробелы, измененные на +).

2
ответ дан 14 December 2019 в 13:26
поделиться

Обратите внимание, что вы можете использовать только строки, которые могут быть поняты как правильный URL, не стоит передавать любую строку в качестве url.

Я использую этот regex, чтобы разрешить строковые значения в моих url:

(?P<string>[\w\-]+)

Это позволяет использовать 'slugs; в ваших url (например: 'this-is-my_slug')

4
ответ дан 14 December 2019 в 13:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: