找不到参数为"("",)"的"random_book"的/allbook Reverse的NoReverseMatch.try 了1个模式:['info/(?P[0-9]+)\Z']

意见.py

class MoreInfoView(View):
    def get(self, request, id):
        book_info = BookModel.objects.filter(id=id).first()
        stuff = get_object_or_404(BookModel, id=self.kwargs['id'])
        total_likes = stuff.total_likes()
        return render(request, 'bookapp/more_info.html', context={
            'id': id,
            'book_info': book_info,
            'book': BookModel,
            'total_likes': total_likes,

        })

def random_book(self):
    book_pks = list(BookModel.objects.values_list('id', flat=True))
    pk = random.choice(book_pks)
    book = BookModel.objects.get(pk=pk)
    return HttpResponse(book)


html

<li class="navigation"><a class="nav-link" href="{% url 'random_book' pk %}">random</a></li>

网址.py

urlpatterns = [
   path('', index, name='index'),
   path('allbook', AllBookView.as_view(), name='allbook'),
   path('addbook', AddBookView.as_view(), name='addbook'),
   path('register', RegisterView.as_view(), name='reg'),
   path('login', LoginView.as_view(), name='login'),
   path('logout', LogoutView.as_view(), name='logout'),
   path('info/<int:id>', MoreInfoView.as_view(), name='more_info'),
   path('profile', profileview, name='profile'),
   path('password-change', ChangePasswordView.as_view(), name='change_pass'),
   path('like/<int:pk>', LikeView, name='like_book'),
   path('info/<int:pk>', views.random_book, name='random_book'),

推荐答案

random_book中删除参数:

urlpatterns = [
   # …
   path('random/', views.random_book, name='random_book')
]

以及{% url … %}模板标签:

<a class="nav-link" href="{% url 'random_book' %}">random</a>

不能将book本身作为对象返回.例如,您应该返回呈现模板的结果:

from django.shortcuts import get_object_or_404, render

def random_book(self):
    book_pks = list(BookModel.objects.values_list('pk', flat=True))
    pk = random.choice(book_pks)
    book = get_object_or_404(BookModel, pk=pk)
    return render(request, 'some-template.html', {'book': book})

Note:型号通常没有…Model后缀.因此,最好将BookModel重命名为Book.

Python相关问答推荐

绘制系列时如何反转轴?

在Python中为变量的缺失值创建虚拟值

Python中使用时区感知日期时间对象进行时间算术的Incredit

滚动和,句号来自Pandas列

如何检测背景有噪的图像中的正方形

使用groupby Pandas的一些操作

使用setuptools pyproject.toml和自定义目录树构建PyPi包

如何在给定的条件下使numpy数组的计算速度最快?

实现自定义QWidgets作为QTimeEdit的弹出窗口

不能使用Gekko方程'

CommandeError:模块numba没有属性generated_jit''''

dask无groupby(ddf. agg([min,max])?''''

Python全局变量递归得到不同的结果

如何使用两个关键函数来排序一个多索引框架?

处理具有多个独立头的CSV文件

如何在两列上groupBy,并使用pyspark计算每个分组列的平均总价值

在Python中从嵌套的for循环中获取插值

如何在Python请求中组合多个适配器?

如何在Python Pandas中填充外部连接后的列中填充DDL值

统计numpy. ndarray中的项目列表出现次数的最快方法