Я думаю, что то, что я пытаюсь сделать, может быть объяснено как попытка передать все мои объекты жанра в мой шаблон для отображения. Я хочу отобразить все мои столбцы и их записи для моей модели жанра на моей странице шаблона 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