Как передать объекты в шаблон Django? - PullRequest
1 голос
/ 22 октября 2019

Я думаю, что то, что я пытаюсь сделать, может быть объяснено как попытка передать все мои объекты жанра в мой шаблон для отображения. Я хочу отобразить все мои столбцы и их записи для моей модели жанра на моей странице шаблона table_home. В настоящее время, когда я перехожу на страницу table_home.html, я получаю NameError at /generators/table_home name 'genre' is not defined

Я хочу сделать то же самое снова с моделью системы, когда она работает.

Может кто-тообъясните, что не так с моим кодом и где я могу прочитать о передаче значений из представлений в шаблоны? Мне это кажется мистическим, и я не знаю, куда обратиться за самопомощью, отчасти потому, что не знаю, какую терминологию искать.

В представлении table_home я пытался имитировать то, что работало в обоихпредставление таблицы и то, что, кажется, работает в представлении индекса. Ни один из них не сработал, и я не совсем уверен, почему.

Мои views.py:

from tablib import Dataset

from .models import Genre, D100Generator, System

def index(request):
    latest_table_list = D100Generator.objects.order_by('-d_100_id')[:5]
    context = {
        'latest_table_list': latest_table_list
    }
    return render(request, 'generators/index.html', context)

def table(request, table_slug):
    table = get_object_or_404(D100Generator, pk=table_slug)
    return render(request, 'generators/table.html', {'table': table})

def table_home(request):
    global_table_list = D100Generator.objects.order_by('table_name')
    genre_list = get_object_or_404(Genre, pk=genre)
    system_list = get_object_or_404(System, pk=system_id)
    #genre_list = Genre.objects.order_by('genre')
    #system_list = System.objects.order_by('system_id')
    context = {
        'global_table_list': global_table_list,
        'genre_list': genre_list,
        'system_list': system_list
    }
    return render(request, 'generators/table_home.html', {context})

Этот применимый фрагмент шаблона table_home.html, касающийся жанров:

<table>
    <tr>
        <th>Genre_id</th>
        <th>Genre name</th>
    </tr>
    {% for genre_id in genre_list %}
    <tr>
        <td>{{ genre_list.genre_id }}</td>
        <td>{{ genre_list.genre_name }}</td>
    </tr>
    {% endfor %}    
</table>

О, а вот модели для жанра и системы:

class System(models.Model):
    system_id = models.AutoField(primary_key=True)
    system_name = models.CharField(max_length=50)
    def __str__(self):
        return self.system_name

class Genre(models.Model):
    genre = models.AutoField(primary_key=True)
    genre_name = models.CharField(max_length=50)
    def __str__(self):
        return self.genre_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...