Django 2.0 slug urls.py意外的关键字参数' slug'

时间:2018-02-28 06:25:22

标签: python django python-3.x django-templates django-views

该网站非常简单只有3页,主页和urls.py中显示的第二个网址效果很好但是当我从主题转到单位页面时我得到了:

  

TypeError at / subjects / units / english

     

units()得到了一个意外的关键字参数' slug'

我不知道为什么我会收到这个错误..在网址和路径中的django 2.0中进行的新修改我阅读了文档,但我不明白set /p "DS=%*" 部分, <slug>我没有得到它以及第一个和第二个含义是什么??? .. 在模板文件夹{{ 1}}单位是路径的名称,但是 - item.slug - 对吗?如果有人向我解释,我将非常感激。

models.py

<slug> or <slug:slug>

views.py

{% url 'units' item.slug %}

urls.py

class Unit(models.Model):
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE)
    name = models.CharField(max_length=250)
    description = models.TextField(blank=True, null=True)
    archived = models.BooleanField(default=False)
    slug = models.SlugField(max_length=250, unique=True)
    created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    updated = models.DateTimeField(auto_now=True, null=True, blank=True)
    seo_name = models.CharField(max_length=60, blank=True, null=True)
    seo_description = models.CharField(max_length=165, blank=True, 
    null=True)

    def save(self, *args, **kwargs):
        self.slug = slugify(self.name)
        super(Unit, self).save(*args, **kwargs)

    def __str__(self):
        return self.name

units.html

from django.http import HttpResponse
from django.template import loader
from .models import Subject, Unit, Lesson

def units(request):
    all_units = Unit.objects.filter(active=True).order_by('-id')[:]
    template = loader.get_template('sheets/units.html')
    context = {
        'all_units': all_units
    }
    return HttpResponse(template.render(context, request))

1 个答案:

答案 0 :(得分:2)

def units(request,slug):
    all_units = Unit.objects.filter(active=True).order_by('-id')[:]
    template = loader.get_template('sheets/units.html')
    context = {
        'all_units': all_units
    }
    return HttpResponse(template.render(context, request))

你需要在视图函数中传递slug,因为你在url中提到了一个名为slug的参数