【发布时间】:2021-01-15 04:58:55
【问题描述】:
我是 Django 新手。我创建了 2 个单独的视图和 URL,但是,当我加载我的开发服务器并单击幻灯片以打开 slides_detail.html 时,它会打开 sub_detail.html,此时我不知道是什么原因导致的,因为没有类似的名称这将导致打开完全不同的详细信息页面。幻灯片和子内容都位于同一个 HTML 文档中,与 URL 和视图相同。没有错误,可以显示。提前致谢:
网址:
path('<int:sub_id>/', views.sub_detail, name='sub_detail'),
path('<int:slides_id>/', views.slides_detail, name='slides_detail'),
观看次数:
# Will show specific sub content details
def sub_detail(request, sub_id):
subcontent = get_object_or_404(SubContent, pk=sub_id)
context = {
'subcontent': subcontent,
}
return render(request, 'home/sub_detail.html', context)
# Will show specific slides content details
def slides_detail(request, slides_id):
slides = Slides.objects.get(pk=slides_id)
context = {
'slides': slides,
}
return render(request, 'home/slides_detail.html', context)
幻灯片的 HTML:
{% for slides in slides %}
<div class="swiper-slide">
<div class="card">
<a href="{% url 'slides_detail' slides.id %}">
<img src="{{ slides.image.url }}" class="card-img-top img-height" alt="..."></a>
<div class="card-body bg-dark">
<h5 class="card-title text-light font-weight-bold text-center">{{ slides.title }}</h5>
</div>
</div>
</div>
{% endfor %}
子内容的 HTML:
{% for sub in subcontent %}
{% if forloop.counter|divisibleby:2 %}
<div class="row">
{% if sub.image %}
<div class="col-md-6 section-index-img">
<img src="{{ sub.image.url }}" class="rounded img-fluid" alt=""/>
</div>
{% endif %}
<div class="col-md-6">
<a href="{% url 'sub_detail' sub.id %}">
<h4>{{ sub.title }}</h4>
</a>
<p class="text-muted">{{ sub.description | linebreaks }}</p>
</div>
</div>
{% else %}
【问题讨论】:
-
模板重叠,因此路径
/2将触发第一个匹配的视图,在本例中为sub_detail。 -
我需要为此更改视图或 URL 吗?
-
您需要为每个网址添加前缀或后缀,以便它仅匹配您想要的一种情况。如果您有
sub_id == 1的记录和slide_id == 1的记录,则 url/1/将匹配列表中的第一个。改为调用这些/sub/<int:pk>/和/slide/<int:pk>/,问题就消失了。 -
谢谢,但是当我这样做时,它给了我 404,但是,当我从 /sub/
/ 中删除第一个 / 时,离开 sub/ / 它可以工作完美。再次感谢您。你知道我怎样才能找到这方面的文档以了解更多信息吗?
标签: html django url view django-views