Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到变量,即找不到键;VariableDoesnotexister at/genres/“;_Python_Django_Python 3.x_Django Templates_Django Mptt - Fatal编程技术网

Python 找不到变量,即找不到键;VariableDoesnotexister at/genres/“;

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

我无法获取模板上与mptt django模型关联的对象。查找键[类型]失败。我有一个链接到另一个模型的模型。我使用mptt-django,以便通过多对多的关系连接对象。在管理面板上一切正常,但在模板上显示对象时会出现此问题。我应该做什么最好?可能我设置的对象周期不正确

型号。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})
视图。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类别%}