【问题标题】:django slug in function base view函数基础视图中的 django slug
【发布时间】:2019-08-11 19:55:11
【问题描述】:

我只是一个学生。我有另一个类似此代码的帖子,但请忽略它。我正在尝试渲染视图。

现在我想知道如何将我已经存在的代码与 slug 一起使用..

这是我用 id 构建的 views.py,

def BookDetail(request, id):
most_recent = Book.objects.order_by('-timestamp')[:3]
book= get_object_or_404(Book, id=id)
form = CommentForm(request.POST or None)
if request.method == "POST":
    if form.is_valid():
        form.instance.user = request.user
        form.instance.post = book
        form.save()
        return redirect(reverse("book-detail", kwargs={
            'id': book.pk
        }))

if request.user.is_anonymous:
    user_membership = None
else:
    try:
        user_membership = Customer.objects.get(user=request.user)
    except Customer.DoesNotExist:
        user_membership = None

context = {
    'user_membership': user_membership,
    'form': form,
    'book': book,
    'most_recent': most_recent,

}
return render(request, 'catalog/book_detail.html', context)

这是我的新书模型,它返回 slug 名称,

class Book(models.Model):
slug = models.SlugField(unique=True, help_text="Enter BIC Code", null=True)
title = models.CharField(max_length=200) #more fields after this

timestamp = models.DateTimeField(default=timezone.now)


activeReference = models.ManyToManyField(Membership)


def __str__(self):
    return self.title

def get_absolute_url(self):
    return reverse('book-detail', kwargs={'slug': self.slug})

@property
def get_comments(self):
    return self.comments.all().order_by('-timestamp')

@property
def pages(self):
    return self.page_set.all()

class Page(models.Model):
slug = models.SlugField(max_length=50)
book = models.ForeignKey(Book, on_delete=models.SET_NULL, null=True)
preview = models.FileField(upload_to='book_content', validators=[pdf_file_extension], help_text="PDF File Only")

def __str__(self):
    return self.slug

def get_absolute_url(self):
    return reverse('page-detail',
                   kwargs={
                       'book_slug': self.book.slug,
                       'page_slug': self.slug
                   })

我希望你能帮助我。

【问题讨论】:

    标签: django django-views slug


    【解决方案1】:

    您只需将id 更改为slug,如下所示:

    def BookDetail(request, slug):
        most_recent = Book.objects.order_by('-timestamp')[:3]
        book= get_object_or_404(Book, slug=slug)
        ...
    

    【讨论】:

    • 它的工作原理..让我测试一下..但现在它真的很好用。
    猜你喜欢
    • 2016-07-05
    • 2015-06-09
    • 2020-02-20
    • 2014-02-16
    • 2021-07-11
    • 1970-01-01
    • 2018-01-16
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多