Используйте тег шаблона URL Django со специальными символами - PullRequest
4 голосов
/ 22 ноября 2010

Я использую URL-тег django для перехода от одного представления к другому:

<a href = {% url wiki_view item %}>Read more here</a>

Для большинства "предметов" это работает отлично. Но у меня есть «предмет» с символом /: Sci-Fi / Fantasy. В этом случае я получаю ошибку

Поймано NoReverseMatch при рендеринге: обратное значение для 'wiki_view' с аргументами '(u'Sci-fi / Fantasy',) 'и ключевыми словами аргументы' {} 'не найдено.

Мой urls.py определен так:

url(r'^wiki/page/(?P<page_title>[^/]*)/$', views.wiki_view, name = 'wiki_view'),

Есть ли способ для этого работать с таким символом "/", как этот?

Ответы [ 3 ]

3 голосов
/ 22 ноября 2010

Используйте фильтр urlencode, как подсказывает Игнасио, однако вы все еще получаете проблему, так как по умолчанию этот фильтр предполагает, что / оставлен в покое. Вы можете решить эту проблему (если вы используете версию dev в настоящее время), используя фильтр следующим образом:

item|urlencode:""

Это объясняется в Django документах .

1 голос
/ 22 ноября 2010

Передайте аргумент сначала через urlencode.

0 голосов
/ 22 ноября 2010

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

from django.template.defaultfilters import slugify
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...