Я создаю веб-сайт электронной коммерции с Django и испытываю некоторые трудности с передачей данных со страницы администратора в базу данных, а затем в html. Я новичок в Django, и мне бы очень понравилась ваша помощь. Я добавил 7 продуктов (класс Product) через страницу администратора Django.
модели.py
from django.db import models
from django.contrib.auth.models import User
class Customer(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
name = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200, null=True)
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=200)
price = models.FloatField()
def __str__(self):
return self.name
class Order(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True, blank=True)
date_ordered = models.DateTimeField(auto_now_add=True)
complete = models.BooleanField(default=False)
transaction_id = models.CharField(max_length=100, null=True)
def __str__(self):
return str(self.id)
class OrderItem(models.Model):
product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
quantity = models.IntegerField(default=0, null=True, blank=True)
date_added = models.DateTimeField(auto_now_add=True)
class ShippingAddress(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, null=True)
order = models.ForeignKey(Order, on_delete=models.SET_NULL, null=True)
address = models.CharField(max_length=200, null=False)
city = models.CharField(max_length=100, null=False)
country = models.CharField(max_length=100, null=False)
postcode = models.CharField(max_length=100, null=False)
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.address
просмотры.py
from django.shortcuts import render
from .models import *
def products(request):
products = Product.objects.all()
context = {'products':products}
return render(request, 'store/products.html')
def cart(request):
context = {}
return render(request, 'store/cart.html')
def checkout(request):
context = {}
return render(request, 'store/checkout.html')
def home(request):
context = {}
return render(request, 'store/home.html')
admin.py
from django.contrib import admin
from .models import *
admin.site.register(Customer)
admin.site.register(Product)
admin.site.register(Order)
admin.site.register(OrderItem)
admin.site.register(ShippingAddress)
В settings.py база данных по умолчанию — sqlite3.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
Снимок экрана страницы администрирования Django с успешно добавленными продуктами
Я выполнил миграцию, и база данных db.sqlite3 выходит из папки моего проекта.
Однако, когда я проверяю значения таблицы store_product, она кажется пустой...
быстрый
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite> .width
sqlite> .mode markdown
sqlite> select * from store_product
...>
На моей html-странице, где я хочу отображать продукты, ничего не отображается... Переменная products пуста:
продукты.html
{% if products is defined %}
value of variable: {{ products }}
{% else %}
variable is not defined
{% endif %}
ничего не показывает...
Большое спасибо за твою помощь.