django slug在函数库视图中

问题描述 投票:0回答:1

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

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

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

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个回答
1
投票

你只需要像这样将id改为slug

def BookDetail(request, slug):
    most_recent = Book.objects.order_by('-timestamp')[:3]
    book= get_object_or_404(Book, slug=slug)
    ...
© www.soinside.com 2019 - 2024. All rights reserved.