首页 > 解决方案 > 为什么我的主页无法识别视图中的“object_list”?

问题描述

我有一个导航栏模板,我想让它动态化。当我想在模板中执行此操作时,什么也没有发生:

{% for platform in object_list %}
    <li><a href="#">{{platform.title}}</a></li>
{% endfor %}

此代码仅适用于 platform.html 文件,但我想在所有 html 文件中显示导航栏

它在 platform.html(platform URL) 中,应该是这样的

而这个在 home url 但它是一个空的 subnav

这是我的模型

from django.db import models

# Create your models here.
class Platform(models.Model):
    PLATFORM_CHOICES = (
        ('PC', 'PC'),
        ('PS', 'playstation'),
        ('XBOX', 'Xbox'),
        ('NS', 'nintendo switch'),
    )
    title = models.CharField(max_length=4, choices=PLATFORM_CHOICES, verbose_name= "platform")
    slug = models.SlugField(max_length=100, unique=True)

    class Meta:
        verbose_name = "platform"
        verbose_name_plural = "platforms"

    def __str__(self):
        return self.title

class Game(models.Model):
    title = models.CharField(max_length=50)
    description = models.TextField()
    slug = models.SlugField(max_length=100, unique=True)
    image = models.ImageField(upload_to="images")
    platform = models.ManyToManyField(Platform)

    class Meta:
        verbose_name = "game"
        verbose_name_plural = "games"

    def __str__(self):
        return self.title

这是我的看法:

from .models import Game, Platform
from django.shortcuts import get_object_or_404, render
from django.views.generic import ListView, DetailView, TemplateView

# Create your views here.
def home(request):
    return render(request, 'blog/home.html')

class GameList(ListView):
    template_name = "blog/game.html"
    model = Game
    games = Game.objects.all()
    context = {
        'games': games
    }

class GameDetail(DetailView):
    template_name = "blog/game_detail.html"
    def get_object(self):
        slug = self.kwargs.get('slug')
        return get_object_or_404(Game.objects.all(), slug=slug)

class PlatformList(ListView):
    template_name = "blog/platform.html"
    model = Platform
    platforms = Platform.objects.all()
    context = {
        'platforms': platforms
    }

这是我的 home.html 文件:

<div class="navbar navbar-inverse">
        <div class="container-fluid">
            <div class="row">
                <div class="col-lg-12">

                    <div class="navbar-header">
                        <button class="navbar-toggle" data-target="#mobile_menu" data-toggle="collapse"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button>
                        <a href="#" class="navbar-brand">GROUP.COM</a>
                    </div>
                    <div class="navbar-collapse collapse" id="mobile_menu">
                        <ul class="nav navbar-nav">
                            <li class="active"><a href="#">Home</a></li>
                            <li><a href="#" class="dropdown-toggle" data-toggle="dropdown">Platforms<span class="caret"></span></a>
                                <ul class="dropdown-menu">
                                {% for platform in object_list %}
                                    <li><a href="#">{{platform.title}}</a></li>
                                {% endfor %}
                                </ul>
                            </li>
                        </ul>
                        <ul class="nav navbar-nav">
                            <li>
                                <form action="" class="navbar-form">
                                    <div class="form-group">
                                        <div class="input-group">
                                            <input type="search" name="search" id="" placeholder="Search Anything Here..." class="form-control">
                                            <span class="input-group-addon"><span class="glyphicon glyphicon-search"></span></span>
                                        </div>
                                    </div>
                                </form>
                            </li>
                        </ul>

                        <ul class="nav navbar-nav navbar-right">
                            <li><a href="#"><span class="glyphicon glyphicon-user"></span> Profile</a></li>
                            <li><a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-log-in"></span> Login / Sign Up <span class="caret"></span></a>
                                <ul class="dropdown-menu">
                                    <li><a href="#">Login</a></li>
                                    <li><a href="#">Sign Up</a></li>
                                </ul>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>

有什么建议我可以解决这个问题吗?

标签: pythonhtmldjangodjango-viewsdjango-templates

解决方案


推荐阅读