Django泛型查看url的问题

时间:2017-03-21 16:12:22

标签: django

我正在创建一个包含两个列表视图和详细信息视图的网站。从第一个列表视图到第二个列表视图我没有问题,但我不确定如何为详细信息视图制作网址

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 %}

这里的问号是

的网址

感谢

1 个答案:

答案 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'),