Я пытаюсь передать 'строковый' аргумент представлению с URL. urls.py идет
('^add/(?P<string>\w+)', add ),
У меня есть проблемы со строками включая пунктуацию, новые строки, пробелы и так далее. Я думаю, что должен изменить \w + во что-то еще. В основном строка будет чем-то скопированным пользователем из текста его выбора, и я не хочу изменять его. Я хочу принять любой символьный и специальный символ так, чтобы представление действовало точно на то, что скопировал пользователь.
Как я могу изменить его?
Спасибо!
Ну, во-первых, есть много символов, которые запрещены в URL. Для начала вспомните ?
и пробелы. Django, вероятно, предотвратит передачу этих символов в ваше представление, что бы вы ни делали.
Во-вторых, вам стоит почитать о модуле re. Именно он задает синтаксис для этих совпадений URL. \w
означает любую заглавную или строчную букву, цифру или _
(в основном, символы идентификатора, за исключением того, что он не запрещает ведущую цифру).
Правильным способом передачи строки в URL является передача в качестве параметра формы (т.е. после ?paramName=
в URL, и с экранированием специальных символов, таких как пробелы, измененные на +
).
Обратите внимание, что вы можете использовать только строки, которые могут быть поняты как правильный URL, не стоит передавать любую строку в качестве url.
Я использую этот regex, чтобы разрешить строковые значения в моих url:
(?P<string>[\w\-]+)
Это позволяет использовать 'slugs; в ваших url (например: 'this-is-my_slug')