2010-06-25 1 views
5

Я пытаюсь передать аргумент 'string' для представления с URL-адресом. urls.py идетDjango url parsing -pass raw string

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

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

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

Спасибо!

ответ

2

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

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

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

4

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

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

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

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

+0

BTW, '\ w' включает' _', а '-' рассматривается как символ, а не маркер диапазона, если это первое, что нужно после' ['(и необязательного'^'), чтобы вы могли написать '(? P [- \ w] +)'. –

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

  • Нет связанных вопросов^_^