【发布时间】:2020-10-16 15:42:23
【问题描述】:
我无法解决这个问题。去了无数的网站和问题,但找不到为什么它不起作用。一切都是进口的。 我运行服务器后得到的错误是:Reverse for 'random_book' with arguments '('',)' not found。尝试了 1 种模式:['book/(?P[-a-zA-Z0-9_]+)$'] 它用模板中的红色突出显示:{% url 'random_book' random_item.slug %} 型号:
class Books(models.Model):
title=models.CharField(max_length=200)
author=models.CharField(max_length=150)
description=models.TextField()
cover=models.ImageField(upload_to='images/', blank=True)
slug=models.SlugField(max_length=100, blank=True, unique=True)
genre=models.ManyToManyField(Genres)
def save(self, *args, **kwargs):
self.slug= slugify(self.title)
super().save(*args, **kwargs)
def __str__(self):
return self.title
def get_absolute_url(self):
kwargs=self.slug
return reverse('random_book', kwargs=kwargs)
观看次数:
def random_book(request, slug):
cartile=Books.objects.all()
random_item=random.choice(cartile)
return render(request, 'carti/book.html', context={"random_item": random_item})
网址:
path('book/<slug:slug>', views.random_book, name="random_book"),
模板:
<a href="{% url 'random_book' random_item.slug %}">{{ random_item.title }}</a>
希望你们能帮助我。
编辑: 如果有人遇到过这个问题,我已经自己解决了这个问题,方法如下:
问题在于视图。我尝试在显示该书的页面而不是按下按钮的主页中获取随机书。基本上在主页上,如果您按下按钮,它会将您带到另一个开始随机化过程的页面,因此它没有任何 slug 数据要传递。您需要在此处添加 random.choice()。
然后,要获取该随机数据并使用其独特的 slug 显示它,您只需在该 random_book 视图上使用 book=Books.objects.get(slug=slug) 。出于某种原因,我仍然不明白,通过获取 slug,您会以某种方式获得与该 slug 关联的数据。
【问题讨论】:
标签: django