这是我的“类别”和“产品”的models.py文件
models.py
from django.db import models
# Create your models here.
class Category(models.Model):
objects = models.Manager()
name = models.CharField(max_length=250, null=False)
slug = models.CharField(max_length=250, null=False)
desc = models.TextField(blank=True)
class Meta:
verbose_name = 'category'
verbose_name_plural = 'categories'
def __str__(self):
return self.name
class Product(models.Model):
objects = models.Manager()
name = models.CharField(max_length=250, null=False)
slug = models.CharField(max_length=250, null=False)
desc = models.TextField(blank=True)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
class Meta:
verbose_name = 'product'
verbose_name_plural = 'products'
def __str__(self):
return self.name
这是我卡住的网址文件:
urls.py
from django.urls import path, include
from website import views
urlpatterns = [
path('', views.home, name='home'),
path('categorys/<slug:category_slug>/', views.category_product, name='category_product'),
path('category/<slug:category_slug>/<slug:product_slug>', views.product, name='product_slug'),
]
是否可以从html传递url中的两个参数,以便我们可以将其传递给乘积函数?
views.py
from django.shortcuts import render, get_object_or_404
from website.models import Product, Category
def home(request):
allcategories = Category.objects.all()
return render(request, 'website/home.html', {'allcategories':allcategories})
def product(request, category_slug, product_slug):
product = Product.objects.get(category__slug=category_slug, slug=product_slug)
return render(request, 'website/display_product.html', {'product':product})
def category_product(request, category_slug):
current_category = get_object_or_404(Category, slug=category_slug)
product = Product.objects.filter(category=current_category)
return render(request, 'website/category_product.html',{'current_category':current_category, 'product':product})
这是我尝试将两个args传递给urls.py的html页面,但是由于错误而卡住了,请指导我,非常感谢您的帮助,谢谢!
category_product.html
Category name : {{ current_category.name }} <br>
<h3>Products </h3>
{% for p in product %}
<a href="{% url 'product_slug' arg1=current_category.name arg2=p.slug %}">
<b>{{ p.name }}</b> <br>
</a>
{% endfor %}
## how to pass two args (or is it possible here) so that it will be passed to the urls.py
答案 0 :(得分:1)
您已通过category_slug
和product_slug
。但是您将arg1和arg2用作参数名称很重要。
category_product.html
Category name : {{ current_category.name }} <br>
<h3>Products </h3>
{% for p in product %}
<a href="{% url 'product_slug' category_slug=current_category.name product_slug=p.slug %}">
<b>{{ p.name }}</b> <br>
</a>
{% endfor %}