【问题标题】:django display five objects from databasedjango 显示来自数据库的五个对象
【发布时间】:2020-07-12 10:57:12
【问题描述】:

所以我只是尝试在 Python Django 中构建一个应用程序并尝试显示一定数量的对象,例如我想从数据库中获取前五个对象并显示它。另一个接下来的五个对象显示在另一个站点上,另外五个对象显示在下一个站点上,依此类推...。我该怎么做?我现在可以这样做,例如:mountains = peaks.objects.all(),然后在模板中使用 for 循环显示所有对象。但我希望每个站点只有五个。

【问题讨论】:

  • Willem 建议查看分页文档(这似乎正是您需要的)或尝试通过切片解决您的问题:all = YourAwsomeModel.objects.all() 然后first_five = all[:5]... six_to_ten = all[5:10]

标签: python django django-models django-database


【解决方案1】:

假设树、鸟、岩石、河流和湖泊是模型中的变量

#views.py
def page1(request):
   mountains = peaks.objects.all()
return render(request, 'page1.html')

#page1.html
{% for objects in mountains %}
        {{ objects.tree }}
        {{ objects.bird }}
        {{ objects.rock }}
        {{ objects.river }}
        {{ objects.lake }}
{% endfor %}

您可以从模型中一一获取变量

【讨论】:

    【解决方案2】:

    您可以对这些使用通用视图。喜欢这些

    from django.views.generic import ListView
    from .models import Peak
    
    class MountainList(ListView):
        model = Peak
        paginate_by = 5
    

    在您的urls.py 中,您应该有这样的模式

    from .models import MountainList
    
    urlpatterns = [
        ...
        path('mountains/',MountainList.as_view(),name='mountain_list'),
        ...
    ]
    

    【讨论】:

    • 感谢您的建议,这对您有很大帮助。
    猜你喜欢
    • 2010-12-20
    • 2022-01-11
    • 1970-01-01
    • 2018-02-08
    • 2018-05-12
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多