Слизняк django работает на одно слово, но когда оно больше, чем одно слово, оно рушится - PullRequest
0 голосов
/ 20 мая 2019

С помощью небольшого слова, вроде «круто», оно работает, но если оно похоже на «не круто», то оно не работает, потому что слизняк делает его не круто.

path('<slug>/', views.series_pg, name='series_detail'),
#MODELS.PY    
class Series(models.Model):
    name = models.CharField(max_length=128, unique=True)
    genre = models.CharField(max_length=128, default=1)
    tv_or_movie = models.CharField(max_length=128, default=1)
    period = models.CharField(max_length=128, default=1)
    descritpion = models.TextField()
    slug = models.SlugField(unique=True)



    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return "/%s/" %self.slug

#VIEWS.PY
def series_pg(request, slug):
    series = Series.objects.get(name=slug)

Если слаг изменяет исходное слово, оно не работает

РЕДАКТИРОВАТЬ:

Моя ошибка

Имеет ли запрос NotExot в / office / Series не соответствующий запрос.

Я добавил «Офис», но slug делает его офисом

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Поле слизня Django работает так, как если бы вы указали значение not cool, тогда оно будет уменьшено до not-cool.

В вашем views.py вы хотите отфильтровать по name. Скажем, в имени оно имеет значение not cool, но в слагфилде вы сохраняете значение not-cool. Затем вы пытаетесь отфильтровать его по .get(name=slug), что означает .get(not cool=not-cool). Таким образом, набор запросов не возвращает никакого подходящего объекта и не совпадает с URL.

Вы можете сделать это

def series_pg(request, slug):
    series = Series.objects.get(slug=slug)
0 голосов
/ 20 мая 2019

"Слаг - это короткая метка для чего-либо, содержащая только буквы, цифры, подчеркивания или дефисы. Обычно они используются в URL-адресах."

-Django Documentation

Каков контекствы используете Slug Field?Он преобразует пространства типа «не круто» в «не круто», потому что это его цель.

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