我正在创建一个用于销售商品的网站,并且我根据数据库中的数据为每种产品创建一张卡片。当新卡片出现时,基于相同数据库数据的动态页面应该自动连接到它。页面已创建,但模型中的数据尚未加载。我看了 Django 指南,它使用 DetailView 展示了这个方法,我从那里获取了代码。请帮助我,我不明白问题是什么。
My code:
views.py:
class car(DetailView):
model = inventory
template_name = 'main/cars.html'
context_object_name = 'inventory'
urls.py:
from . import views
urlpatterns = [
path('inventory/<int:pk>', views.car.as_view(), name='cars'),
]
cars.html:
{% extends 'main/layout.html' %}
{% block main %}
{% for el in invent %}
<div class="main-card ">
<img src = '{{ el.img_1 }}' style="">
<h3 style="">{{ el.name }}</h3>
<h4 style="">{{ el.rent }}</h4>
<button><a href="{% url 'cars' el.id %}">Details</a></button>
</div>
{% endfor %}
{% endblock %}
models.py:
class inventory(models.Model):
name = models.CharField('Name', max_length=100)
type = models.CharField('Type of car', max_length=6)
img_1 = models.ImageField(upload_to='./sql_imgs')
img_2 = models.ImageField(upload_to='./sql_imgs')
img_3 = models.ImageField(upload_to='./sql_imgs')
img_4 = models.ImageField(upload_to='./sql_imgs')
img_5 = models.ImageField(upload_to='./sql_imgs')
img_6 = models.ImageField(upload_to='./sql_imgs')
img_7 = models.ImageField(upload_to='./sql_imgs')
img_8 = models.ImageField(upload_to='./sql_imgs')
MSRP = models.CharField('msrp', max_length=40)
Purchase = models.CharField('purchase', max_length=40)
rent = models.CharField('rent', max_length=40)
specs = models.TextField('specs')
text = models.TextField('About car')
def str(self):
return self.name
class Meta:
verbose_name = 'Inventory'
verbose_name_plural = 'Inventory'
我读了很多文章,但没有发现任何有价值的东西。希望我能在这里找到答案。
请像这样更新您的代码:
models.py
from django.db import models
class Inventory(models.Model):
name = models.CharField('Name', max_length=100)
type = models.CharField('Type of car', max_length=6)
img_1 = models.ImageField(upload_to='sql_imgs/')
img_2 = models.ImageField(upload_to='sql_imgs/')
img_3 = models.ImageField(upload_to='sql_imgs/')
img_4 = models.ImageField(upload_to='sql_imgs/')
img_5 = models.ImageField(upload_to='sql_imgs/')
img_6 = models.ImageField(upload_to='sql_imgs/')
img_7 = models.ImageField(upload_to='sql_imgs/')
img_8 = models.ImageField(upload_to='sql_imgs/')
MSRP = models.CharField('msrp', max_length=40)
Purchase = models.CharField('purchase', max_length=40)
rent = models.CharField('rent', max_length=40)
specs = models.TextField('specs')
text = models.TextField('About car')
def __str__(self):
return self.name
class Meta:
verbose_name = 'Inventory'
verbose_name_plural = 'Inventories'
views.py
from django.views.generic.detail import DetailView
from .models import Inventory
class CarDetailView(DetailView):
model = Inventory
template_name = 'main/cars.html'
context_object_name = 'inventory'
urls.py
from django.urls import path
from .views import CarDetailView
urlpatterns = [
path('inventory/<int:pk>/', CarDetailView.as_view(), name='cars'), # Added trailing slash for best practice
]
cars.html
{% extends 'main/layout.html' %}
{% block main %}
<div class="main-card">
<img src="{{ inventory.img_1.url }}" alt="{{ inventory.name }}">
<h3>{{ inventory.name }}</h3>
<h4>{{ inventory.rent }}</h4>
<p>{{ inventory.text }}</p>
</div>
{% endblock %}
请像这样更新您的代码,让我们看看接下来会发生什么来根据需要修复它。