2016-03-18 2 views
0

Я пытаюсь включить все символы, включая дефисы после/blog/*, и передать их моей функции в views.py.pass hypen in django url

Это мой URL

/blog/entry-id-01 

У меня есть это в моем urls.py

urls(r'^blog/(?P<entry>[-\w]+)/$, blog_entry) 

Однако, когда я загружаю мою страницу. Я получаю следующее сообщение об ошибке:

TemplateDoesNotExist at /blog/entry-id-01 

Мое значение исключение:

blog_pages/articles/entry.html 

Есть ли способ, чтобы включить все символы, включая дефис?

изменение: добавлено view.py

def blog_entry (request, entry): 
    return render(request, 'blog_pages/articles/'+entry+'.html') 
+0

проблемы я s недостающий шаблон не соответствует обратному совпадению – Sayse

+0

Пропущенный шаблон - это потому, что обратное совпадение не работает. Правильный файл - entry-id-01.html. Однако, поскольку регулярное выражение не может анализировать дефисы, оно ищет только entry.html – nimbus

+0

Регулярное выражение прекрасно, поэтому почему ошибка показывает URL-адрес. В вашем представлении ссылается шаблон, который он не может найти – Sayse

ответ

0

Я установил мою проблему с помощью этого регулярного выражения

(?P<entry>[^/]+) 
1

Regex для соответствующих символов слова должна быть \w не /w, а также вы должны указать имя для имени группы захвата.

url(r'^blog/(?P<id>[-\w]+)/$', blog_entry) 
       ^^ ^
+1

Ах спасибо, на самом деле у меня было это по правильному пути. Я просто ошибся здесь. – nimbus

+0

Я пробовал использовать (. +), Но все же ничего? – nimbus

+0

можешь добавить код, связанный с blog_entry view –

0

Как было отмечено в комментариях, ваша ошибка не имеет ничего общего с регулярным выражением, он будет возвращать NoReverseMatch, если бы это было так. Вы можете легко доказать это, указав url на другое представление, которое работает, или изменив файл шаблона, который возвращает представление в шаблон, который работает.

Я предположил бы, что вы действительно не имеют другой файл HTML шаблона для каждого возможного вступления

'blog_pages/articles/entry-n.html' 

и его более вероятно, что у вас есть один единственный шаблон HTML, что все записи следует использовать таким образом, вы должны ссылаться на что

'blog_pages/articles/entry.html'