【发布时间】:2020-05-21 03:44:34
【问题描述】:
我才刚刚开始,但我遇到了问题。我想进去
Slug查看给定类别('slug')中所有产品的列表。
models.py
class Category(models.Model):
category_name = models.CharField(max_length=64)
slug = models.CharField(max_length=64, unique=True)
class Product(models.Model):
name = models.CharField(max_length=128)
description = models.TextField()
price = models.FloatField()
vat = models.FloatField(choices=VAT)
stock = models.IntegerField()
categories = models.ManyToManyField(Category)
@property
def name(self):
return "Nazwa: {}, cena: {}".format(self.name, self.price)
def __str__(self):
return self.name
views.py
class SlugView(View):
def get(self, request, slug):
category = Category.objects.filter(slug=slug)
return render(request,'exercises/slug.html', {'products': products})
urls.py
re_path(r'categories/(?P<slug>\w+)', SlugView.as_view(), name = "slug")
错误列表: ''' 在http://127.0.0.1:8000/ 启动开发服务器 使用 CONTROL-C 退出服务器。 [05/Feb/2020 09:46:37]“GET / HTTP/1.1”200 965 [05/Feb/2020 09:46:42]“GET / HTTP/1.1”200 965 [05/Feb/2020 09:46:45]“GET /categories HTTP/1.1”200 997 内部服务器错误:/categories/1234D 回溯(最近一次通话最后): _resolve_lookup 中的文件“/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py”,第 828 行 当前 = 当前[位] TypeError:“产品”对象不可下标
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 34, in inner
response = get_response(request)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/views/generic/base.py", line 71, in view
return self.dispatch(request, *args, **kwargs)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/views/generic/base.py", line 97, in dispatch
return handler(request, *args, **kwargs)
File "/home/marekk/Pulpit/kurs/django-za2/WAR_PYT_W_11_Zaawansowane_Django/3_Django/coderslab/exercises/views.py", line 30, in get
return render(request,'exercises/slug.html', {'products': products})
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/loader.py", line 62, in render_to_string
return template.render(context, request)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/backends/django.py", line 61, in render
return self.template.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 171, in render
return self._render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 150, in render
return compiled_parent._render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 163, in _render
return self.nodelist.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/defaulttags.py", line 209, in render
nodelist.append(node.render_annotated(context))
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/loader_tags.py", line 62, in render
result = block.nodelist.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 936, in render
bit = node.render_annotated(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 903, in render_annotated
return self.render(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 986, in render
output = self.filter_expression.resolve(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 670, in resolve
obj = self.var.resolve(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 795, in resolve
value = self._resolve_lookup(context)
File "/home/marekk/Pulpit/kurs/Django_cwicz/venv/lib/python3.6/site-packages/django/template/base.py", line 836, in _resolve_lookup
current = getattr(current, bit)
File "/home/marekk/Pulpit/kurs/django-za2/WAR_PYT_W_11_Zaawansowane_Django/3_Django/coderslab/exercises/models.py", line 88, in name
return "Nazwa: {}, cena: {}".format(self.name, self.price)
File "/home/marekk/Pulpit/kurs/django-za2/WAR_PYT_W_11_Zaawansowane_Django/3_Django/coderslab/exercises/models.py", line 88, in name
return "Nazwa: {}, cena: {}".format(self.name, self.price)
File "/home/marekk/Pulpit/kurs/django-za2/WAR_PYT_W_11_Zaawansowane_Django/3_Django/coderslab/exercises/models.py", line 88, in name
return "Nazwa: {}, cena: {}".format(self.name, self.price)
[Previous line repeated 449 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object
[05/Feb/2020 09:46:49] "GET /categories/1234D HTTP/1.1" 500 1694912
'''
这里是模板。
模板“slug.html” '''
{% extends 'exercises/base.html' %}
{% block page_title %}
<h1>Sklep internetowy OLABOGA.</h1>
{% endblock %}
{% block content_title %}<h2>Produkty w kategorii:</h2>
{% endblock %}
{% block content %}
<ul>
{% for product in products %}
{% block element %}
<li><a href='/{% block link %}product{% endblock %}/
{{ product.name }}'>{{ product.name }}</a></li>
{% endblock %}
{% endfor %}
</ul>
{% endblock %}
'''
模板“base.html” '''
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% block logo %}
<img src="{% static 'images/logo.png' %}" alt="Tu powinno być logo" >
{% endblock %}
{% block page_content %}
{% block page_title %}
<h1>Szkoła podstawowa nr 1 im. Chucka Norrisa.</h1>
{% endblock %}
{% block content_title %}
<h2>Klasy:</h2>
{% endblock %}
{% block content %}
<ul>
{% for object in objects %}
{% block element %}
<li><a href='/{% block link %}class{% endblock %}/{}'>{}</a></li>
{% endblock %}
{% endfor %}
</ul>
{% endblock %}
{% block additional %}
{% endblock %}
{% endblock %}
</body>
</html>
'''
这部分代码有问题,但我不知道为什么:
@property
def name(self):
return "Nazwa: {}, cena: {}".format(self.name, self.price)
def __str__(self):
return self.name
在这一行中(这是 models.py 中的第 88 行)
return "Nazwa: {}, cena: {}".format(self.name, self.price)
错误信息:
请求方法:GET 请求网址:http://127.0.0.1:8000/categories/1234C Django 版本:3.0 异常类型:递归错误 异常值:
调用 Python 对象时超出最大递归深度
异常位置:/home/marekk/Pulpit/kurs/django-za2/WAR_PYT_W_11_Zaawansowane_Django/3_Django/coderslab/exercises/models.py 在名称中,第 88 行
我添加到views.py:
from django import template
register = template.Library()
@register.filter
def multiply(value, arg):
return value * arg
到我添加的模板:
{{ product.price|multiply:product.vat }}
【问题讨论】:
标签: django django-views