Py学习  »  Django

Django Slug只适用于一个单词,但当它超过一个单词时,它就会崩溃。

rosababy • 4 年前 • 571 次点击  

用一个像“酷”这样的小词就行了,但如果它像“不酷”,那么就行不通了,因为slug会让它不酷。

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)

如果slug改变了原来的单词,那么它就不起作用了

编辑:

我的错误是

不在办公室工作/ 序列匹配查询不存在。

我加了“办公室”,但斯拉格让它成为办公室

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38348
 
571 次点击  
文章 [ 2 ]  |  最新文章 4 年前
wgarlock
Reply   •   1 楼
wgarlock    4 年前

“slug是一个东西的短标签,只包含字母、数字、下划线或连字符。它们通常用于URL。”

-Django文件

您使用的是什么上下文的slug字段?它将把“not cool”这样的空格转换为“not cool”,因为这就是它的目的。

shafik
Reply   •   2 楼
shafik    4 年前

Django Slug Field的工作原理与 not cool 那就把这个塞进去 not-cool

在你的视图中.py你想过滤 name 。 说它的名字有价值 不酷 但在斯拉格菲尔德,你保持价值 不酷 . 然后你试着把它过滤掉 .get(name=slug) 这意味着 .get(not cool=not-cool) . 因此,查询集不会返回任何匹配的对象,也不会与URL匹配。

你能做到的

def series_pg(request, slug):
    series = Series.objects.get(slug=slug)