为什么我得到模型 DoesNotExist 但服务器能够显示它?
Why do I get model DoesNotExist but server is able to display it?
我不明白错误的Traceback,但是Server是运行fine(0个问题),我从 view.py
获得了我需要的所有数据。似乎必须使用 get()
方法...
DoesNotExist: matching query does not exist
这是我用的models
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=64, blank=True)
image = models.ImageField(upload_to="portraits", blank=True, default="default.jpg")
def __str__(self):
return f"{self.username}"
class Category(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=64)
description = models.CharField(max_length=255, blank=True)
def __str__(self):
return f"{self.name}"
class Item(models.Model):
id = models.AutoField(primary_key=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="inventory")
name = models.CharField(max_length=64)
description = models.CharField(max_length=255)
image = models.ImageField(blank=True, default="Megamind.jpg")
starting_bid = models.PositiveIntegerField(default=0)
category = models.ForeignKey(Category, on_delete=models.CASCADE, default="1", related_name="stuff")
active = models.BooleanField(default=True)
favorited = models.ManyToManyField(User, blank=True, related_name="favorites")
def __str__(self):
return f"{self.name} of {self.owner}"
和相关的 view.py
文件
def index(request):
auctions = Item.objects.filter(active=True)
context = {'auctions':auctions, 'title':'Active Listings'}
return render(request, "auctions/index.html", context)
def category_view(request, category):
category = category.capitalize()
category_obj = Category.objects.get(name=category)
category_id = category_obj.id
items = Item.objects.filter(category=category_id, active=True)
context = {'auctions':items, 'title':category}
return render(request, "auctions/index.html", context)
如果有帮助:
我从 urls.py
转为 str
path("<str:category>", views.category_view, name="category")
查看回溯,/favicon.ico
请求时出现错误。现代浏览器会自动询问 favico。
你可以做类似的事情来避免这个错误:
url(r'^favicon\.ico$',RedirectView.as_view(url='/static/images/favicon.ico')),
正如@Sharpek 正确提到的那样,错误是由 /favicon.ico
请求引起的,显然来自浏览器。修复它的最简单方法是将其添加到您的 base.html
模板到 head
标签中:
{% load static %} <!-- If it wasn't already used -->
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
然后,如果您的 STATIC_ROOT
中没有 favicon.ico
,您将遇到 404
错误。否则,您将得到 200
.
我不明白错误的Traceback,但是Server是运行fine(0个问题),我从 view.py
获得了我需要的所有数据。似乎必须使用 get()
方法...
DoesNotExist: matching query does not exist
这是我用的models
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=64, blank=True)
image = models.ImageField(upload_to="portraits", blank=True, default="default.jpg")
def __str__(self):
return f"{self.username}"
class Category(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=64)
description = models.CharField(max_length=255, blank=True)
def __str__(self):
return f"{self.name}"
class Item(models.Model):
id = models.AutoField(primary_key=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, related_name="inventory")
name = models.CharField(max_length=64)
description = models.CharField(max_length=255)
image = models.ImageField(blank=True, default="Megamind.jpg")
starting_bid = models.PositiveIntegerField(default=0)
category = models.ForeignKey(Category, on_delete=models.CASCADE, default="1", related_name="stuff")
active = models.BooleanField(default=True)
favorited = models.ManyToManyField(User, blank=True, related_name="favorites")
def __str__(self):
return f"{self.name} of {self.owner}"
和相关的 view.py
文件
def index(request):
auctions = Item.objects.filter(active=True)
context = {'auctions':auctions, 'title':'Active Listings'}
return render(request, "auctions/index.html", context)
def category_view(request, category):
category = category.capitalize()
category_obj = Category.objects.get(name=category)
category_id = category_obj.id
items = Item.objects.filter(category=category_id, active=True)
context = {'auctions':items, 'title':category}
return render(request, "auctions/index.html", context)
如果有帮助:
我从 urls.py
转为 str
path("<str:category>", views.category_view, name="category")
查看回溯,/favicon.ico
请求时出现错误。现代浏览器会自动询问 favico。
你可以做类似的事情来避免这个错误:
url(r'^favicon\.ico$',RedirectView.as_view(url='/static/images/favicon.ico')),
正如@Sharpek 正确提到的那样,错误是由 /favicon.ico
请求引起的,显然来自浏览器。修复它的最简单方法是将其添加到您的 base.html
模板到 head
标签中:
{% load static %} <!-- If it wasn't already used -->
<link rel="shortcut icon" type="image/png" href="{% static 'favicon.ico' %}"/>
然后,如果您的 STATIC_ROOT
中没有 favicon.ico
,您将遇到 404
错误。否则,您将得到 200
.