[\w-]+
не соответствует пробелам. Этот шаблон используется для заголовков [Django -doc] . Слаг - это способ приятного отображения текста в браузере, поскольку пробел отображается как %20
, а дефис - как -
.
Чтобы создать слаг, вы можете использовать из SlugField
[Django -doc] или AutoSlugField
[readthedocs] из django-autoslug
пакет [readthedocs] . django-autoslug
, вероятно, более удобен.
Вы можете установить его в своей локальной среде с помощью:
pip install <b>django-autoslug</b>
, затем вы можете добавить slug в свою модель:
from autoslug import <b>AutoSlugField</b>
class DemoText(models.Models):
title = models.CharField(max_length=128, unique=True)
slug = AutoSlugField(<b>populate_from='title'</b>)
A SlugField
по умолчанию также добавит db_index
в столбец, чтобы обеспечить быстрое извлечение.
тогда в вашем URL вы можете сопоставить его, возможно, лучше переименовать параметр в slug
чтобы избежать путаницы:
url(r'^Demo/(?P<b><slug></b>[\w-]+)/$', views.demo_document, name='demo_document'),
В представлении вы можете сопоставить slug
:
def demo_document (request, slug ): demotext = DemoText.objects.get ( slug = slug ) demotexts = DemoText.objects.all (). Order_by ('date') return render (request, 'keywordExtraction / demo. html', {'demotext ': demotext,' demotexts ': demotexts})
и в шаблоне вы визуализируете его с помощью slug:
{% for demotext in demotexts %}
<li><a href="{% url 'keywordExtraction:demo_document' <b>slug</b>=demotext<b>.slug</b> %}">{{ demotext.title }}</a></li>
{% endfor %}
Вероятно, вам нужно будет снова заполнить базу данных для генерации slug .