gpt4 book ai didi

django - 我如何使 slugs 在 django 中工作

转载 作者:行者123 更新时间:2023-12-03 10:19:56 25 4
gpt4 key购买 nike

我已关注 basic polls tutorial我试图修改它以使其适用于蛞蝓,但它不起作用。我在我的 views.py 中从这个开始

def detail(request, article_id):
details = "blog/detail.html"
context = {
"article": get_object_or_404(Article, pk=article_id)
}
return render(request, details, context)


url(r'^(?P<article_id>[0-9]+)/$', views.detail, name='detail'),

在我的 views.py 中
def detail(request, slug):
details = "blog/detail.html"
context = {
"article": get_object_or_404(Article, slug)
}
return render(request, details, context)


url(r'^(?P<slug>[\w-]+)/$', views.detail, name='detail'),

这是我的models.py
from django.db import models

from django.contrib.auth.models import User



class Article(models.Model):
author = models.ForeignKey(User)
title = models.CharField(max_length=250)
slug = models.SlugField()
body = models.TextField()
created = models.DateTimeField(auto_now=True)

def __str__(self):
return self.title

这是我的 admin.py
from django.contrib import admin

from .models import Article


@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):
prepopulated_fields = {"slug": ("title",)}

但它不起作用。如何让 slugs 显示在我的网址中

最佳答案

在您的意见中,您需要通过slug争论。

def detail(request, slug):
details = "blog/detail.html"
context = {
"article": get_object_or_404(Article, slug=slug) # pass slug
}
return render(request, details, context)

如果您正在创建 Articles使用管理员,然后是 slug将使用 title 预先填充 field 。但是,如果你想创建一个 article除了在管理员中进行之外,您需要调用 slugify() 在模型的 save() 中显式地起作用并将其分配给 article在保存对象之前。

您可以执行以下操作:
class Article(models.Model):

def save(self, *args, **kwargs):
self.slug = slugify(self.title) # set the slug explicitly
super(Article, self).save(*args, **kwargs) # call Django's save()

注:由于您使用的是 slug而不是 iddetail看来,这意味着没有 2 篇文章应该具有相同的 slug即相同 title .添加 unique=True模型中用于处理此问题的约束。

关于django - 我如何使 slugs 在 django 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com