Python 找不到变量,即找不到键;VariableDoesnotexister at/genres/“;
我无法获取模板上与mptt django模型关联的对象。查找键[类型]失败。我有一个链接到另一个模型的模型。我使用mptt-django,以便通过多对多的关系连接对象。在管理面板上一切正常,但在模板上显示对象时会出现此问题。我应该做什么最好?可能我设置的对象周期不正确 型号。py:Python 找不到变量,即找不到键;VariableDoesnotexister at/genres/“;,python,django,python-3.x,django-templates,django-mptt,Python,Django,Python 3.x,Django Templates,Django Mptt,我无法获取模板上与mptt django模型关联的对象。查找键[类型]失败。我有一个链接到另一个模型的模型。我使用mptt-django,以便通过多对多的关系连接对象。在管理面板上一切正常,但在模板上显示对象时会出现此问题。我应该做什么最好?可能我设置的对象周期不正确 型号。py: from django.db import models from django.urls import reverse from django.utils import timezone from mptt.mod
from django.db import models
from django.urls import reverse
from django.utils import timezone
from mptt.models import MPTTModel, TreeForeignKey, TreeManyToManyField
class Genre(MPTTModel):
name = models.CharField(max_length=50, unique=True, verbose_name='Подкатегория')
slug = models.SlugField(max_length=200, null=True, blank=True, unique=True, verbose_name='Nazvanie_kategorii')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children',
verbose_name='Категория')
is_active = models.BooleanField(default=False, verbose_name='Активность категории')
created = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата создания записи')
updated = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата ред-ия записи')
class MPTTMeta:
order_insertion_by = ['name']
verbose_name = 'Тест мптт'
verbose_name_plural = 'Тест мптт'
class Meta:
verbose_name = 'Дерево категорий'
verbose_name_plural = 'Дерево категорий'
def __str__(self):
return '%s' % self.name
def get_absolute_url(self):
return reverse('test_mptt:promotion_list_by_category', args=[self.slug])
from django.shortcuts import render, get_object_or_404
from .models import Genre, Promotion, PromotionDetails
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def show_genres(request, category_slug=None):
category = None
categories = Genre.objects.all()
promotions = Promotion.objects.filter(is_active=True)
if category_slug:
category = get_object_or_404(Genre, slug=category_slug)
promotions = promotions.filter(category=category)
return render(request, "genre/list.html", {'category': category,
'categories': categories,
'promotions': promotions})
视图。py:
from django.db import models
from django.urls import reverse
from django.utils import timezone
from mptt.models import MPTTModel, TreeForeignKey, TreeManyToManyField
class Genre(MPTTModel):
name = models.CharField(max_length=50, unique=True, verbose_name='Подкатегория')
slug = models.SlugField(max_length=200, null=True, blank=True, unique=True, verbose_name='Nazvanie_kategorii')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children',
verbose_name='Категория')
is_active = models.BooleanField(default=False, verbose_name='Активность категории')
created = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата создания записи')
updated = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата ред-ия записи')
class MPTTMeta:
order_insertion_by = ['name']
verbose_name = 'Тест мптт'
verbose_name_plural = 'Тест мптт'
class Meta:
verbose_name = 'Дерево категорий'
verbose_name_plural = 'Дерево категорий'
def __str__(self):
return '%s' % self.name
def get_absolute_url(self):
return reverse('test_mptt:promotion_list_by_category', args=[self.slug])
from django.shortcuts import render, get_object_or_404
from .models import Genre, Promotion, PromotionDetails
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def show_genres(request, category_slug=None):
category = None
categories = Genre.objects.all()
promotions = Promotion.objects.filter(is_active=True)
if category_slug:
category = get_object_or_404(Genre, slug=category_slug)
promotions = promotions.filter(category=category)
return render(request, "genre/list.html", {'category': category,
'categories': categories,
'promotions': promotions})
html模板列表.html:(我已经导入了{%load mptt\U tags%})
{%用于促销活动中的促销%}
{%if promotion.site%}
{%else%}
{%if promotion.schedule_start和promotion.schedule_end%}
-
{%endfor%}
{%如果不是node.is_leaf_node%}
{%endif%}
{%endrecursetree%}
错误日志:
html模板包含以下行:
{% recursetree genres %}
因此,模板希望看到名为genres
的变量
在view函数中,您有以下渲染调用:
return render(request, "genre/list.html", {'category': category,
'categories': categories,
'promotions': promotions})
您没有将名为
genres
的变量传递给模板。html模板包含以下行:
{% recursetree genres %}
因此,模板希望看到名为genres
的变量
在view函数中,您有以下渲染调用:
return render(request, "genre/list.html", {'category': category,
'categories': categories,
'promotions': promotions})
您没有将名为
genres
的变量传递给模板。天啊,我真讨厌自己。非常感谢你的提示!一切都变好了!{%recursetree categories%}天哪,我真恨自己。非常感谢你的提示!一切都变好了!{%recursetree类别%}