Django URL-разбор -пропустить необработанную строку - PullRequest
5 голосов
/ 25 июня 2010

Я пытаюсь передать аргумент 'string' в представление с URL-адресом. Urls.py идет

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

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

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

Спасибо!

Ответы [ 2 ]

4 голосов
/ 25 июня 2010

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

Я использую это регулярное выражение, чтобы разрешить значения строк в моих URL:1003 *

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

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

2 голосов
/ 25 июня 2010

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

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

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

...