我正在创建一个包含两个列表视图和详细信息视图的网站。从第一个列表视图到第二个列表视图我没有问题,但我不确定如何为详细信息视图制作网址
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>[0-9]+)/$', views.ItemsView.as_view(), name='items'),
url(r'^(?P<category_id>[0-9]+)/(?P<products_id>[0-9]+)/$', views.DetailView.as_view(), name='details'),
]
我不确定在底部网址上替换“category_id”和“products_id”的内容
from django.http import Http404
from django.shortcuts import render
from django.views import generic
from .models import Category, Products
class IndexView(generic.ListView):
template_name = 'products/index.html'
context_object_name = 'all_categories'
def get_queryset(self):
return Category.objects.all()
class ItemsView(generic.ListView):
template_name = 'products/items.html'
context_object_name = 'all_items'
def get_queryset(self):
return Products.objects.all()
class DetailView(generic.DetailView):
model = Products
template_name = 'products/details.html'
html:
{% extends 'products/base.html' %}
{%block title%}Home{%endblock%}
{% block body %}
{% if all_items %}
<ul>
{% for product in all_items %}
<li><a href="{?????????}">{{product.name}}</a> </li>
{% endfor %}
</ul>
{% else %}
<h3>You have no categories</h3>
{% endif %}
{% endblock %}
这里的问号是
的网址感谢
答案 0 :(得分:0)
使用您的网址名称,在您的url.py中定义。 Check the documentation
<li><a href="{% url 'details' product.pk %}">{{ product.name }}</a></li>
为什么你的网址需要类别?您可以像这样访问您的产品。而您的DetailView只需要对象的主键。
url(r'^product/(?P<products_id>[0-9]+)/$', views.DetailView.as_view(), name='details'),