python - 在 Django 中为单个产品创建页面

标签 python django django-models django-templates

我有一个“类别”、“子类别”和“产品”模型。我不想查看每个类别、子类别和产品,而是想跳转到将填充正确模型的模板。

模型.py

class Category(models.Model):
    category_title = models.CharField(max_length=200)
    category_image = models.ImageField(upload_to="category")
    category_description = models.TextField()
    category_slug = models.SlugField(max_length=200, default=1)

    class Meta:
        verbose_name_plural = "Categories"

    def __str__(self):
        return self.category_title 


class Subcategory(models.Model):
    subcategory_title = models.CharField(max_length=200)
    subcategory_image = models.ImageField()
    subcategory_category = models.ForeignKey(
        Category, default=1, verbose_name="Category", on_delete=models.SET_DEFAULT)

    class Meta:
        verbose_name_plural = "Subcategories"

    def __str__(self):
        return self.subcategory_title


class Product(models.Model):
    product_title = models.CharField(max_length=200)
    product_image = models.ImageField()
    product_base_price = models.DecimalField(max_digits=12, decimal_places=2)
    product_addons = models.CharField(max_length=200, blank=True)
    product_description = models.TextField()
    product_date_added = models.DateTimeField(default=datetime.now, blank=True)
    product_slug = models.SlugField(max_length=200, default=1)
    product_subcategory = models.ForeignKey(
    Subcategory, default=1, verbose_name="Subcategories", on_delete=models.SET_DEFAULT)
    product_available = models.BooleanField(default=True)

最佳答案

列出带有特定产品链接的所有产品

这里是产品模型的示例 View url模板。请将 myapp 替换为您的应用名称。

定义 View :

# views.py
from django.views.generic import ListView
from django.shortcuts import render
from .models import Product

class ProductList(ListView):
    model = Product

def productdetail(request,id):
    product = Product.objects.get(id = id)
    return render(request, 'myapp/product.html', {'product': product})

最后将该 View 挂接到您的网址中:

# urls.py
from django.urls import path
from myapp.views import ProductList, productdetail

urlpatterns = [
    path('products/', ProductList.as_view()),
    path('products/<int:pk>/', productdetail, name='productdetail'),
]

创建一个模板来列出产品:/path/to/project/myapp/templates/myapp/products_list.html

{% extends "base.html" %}

{% block content %}
    <h2>Products</h2>
    <ul>
        {% for product in object_list %}
            <li><a href="{% url 'productdetail' product.id %}">{{ product.product_title }} </a></li>
        {% endfor %}
    </ul>
{% endblock %}

创建一个模板来显示特定产品:/path/to/project/myapp/templates/myapp/product.html::

{% extends "base.html" %}

{% block content %}
    <h2>Product</h2>
    {{product.product_title}}
{% endblock %}

关于python - 在 Django 中为单个产品创建页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57618735/

相关文章:

python - 使用 discord.py 的一个命令允许多个角色

python - 如何在单个查询集中组合两个 django 模型对象值

python - 将 Linux 命令从一台机器发送到另一台机器的最佳方法是什么?

python - Django 动态 url

python - python子模块如何在它们之间共享稀缺资源?

python - 为 web2py 应用程序安装 Python 模块

python - 我如何过滤 itertools chain() 结果?

django - 使用post请求登录/检查Django网站数据库中的用户名和密码

django - 通过 Django admin 删除对象时,是否可以禁用相关对象的生成?

python - cPickle.UnpicklingError : pickle data was truncated