我有一个应用程序,其中Paper(Paper将是一个库)有多本书。我想显示一个侧栏,按标题列出书籍:
HOBIT
LOTR
当我浏览localhost时,我得到一个只有一条记录重复的侧边栏:
HOBIT
HOBIT
HOBIT
HOBIT
HOBIT
我认为我的循环在nav.html中一定有问题。
我是Python和Django的新手,我在循环python,django文档和堆栈溢出方面做了大量工作,但我在将其实现到当前代码时遇到了问题。如果我发布了很多代码,我很抱歉,但我希望你能看到更大的图片。
感谢您的时间。
views.py
from django.shortcuts import render
from .models import Paper
def index(request):
paper_list = Paper.objects.all()
context = {'paper_list': paper_list}
return render(request, 'papers/index.html', context)
def detail(request, slug):
paper = Paper.objects.get(slug=slug)
context = {'paper': paper}
return render(request, 'papers/detail.html', context)
nav.html
<nav class="menu" id="theMenu">
<div class="menu-wrap" data-spy="scroll">
<h1 class="logo"><a href="{% url 'papers:index' %}">MY LIBRARY</a></h1>
<i class="icon-remove menu-close"></i>
{% for slug in paper.slug %}
<a href="{% url 'detail' slug=paper.slug %}">{{ paper.title }}</a>
{% endfor %}
</div>
<div id="menuToggle"><i class="icon-reorder"></i></div>
的index.html
{% block h1 %}
<div class="box first">
<div class="row">
<div class="container">
{% for paper in paper_list %}
<div class="col-xs-12 col-sm-4 col-md-3">
<div class="center">
<a href="{{ paper.slug }}" i class="icon-credit-card icon-md icon-color1"></a></li>
<h4>{{ paper.title }}
<p>{{ paper.description }}
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock %}
detail.html
{% extends "master2.html" %}
{% block h1 %}
<div id="g">
<div class="container">
<div class="row">
<h3>{{ paper.title }}</h3>
<br>
<br>
<div class="col-xs-12 "><p>{{ paper.large_description }}</p></div>
</div>
</div>
</div>
{% endblock %}
{% block title %} Detail {% endblock %}
master2.html
<!DOCTYPE html>
<html>
<head>
<title>{% block title %}{% endblock %}</title>
<link href="/static/font.min.css" rel="stylesheet">
<link href="/static/bootstrap.min.css" rel="stylesheet">
<link href="/static/font-awesome.min.css "rel="stylesheet">
<link href="/static/main.css" rel="stylesheet">
</head>
<body data-spy="scroll" data-offset="0" data-target="#theMenu">
{% include "nav.html" %}
{% include "header2.html" %}
{% block h1 %}{% endblock %}
<script src="/static/jquery.js"></script>
<script src="/static/bootstrap.min.js"></script>
<script src="/static/jquery.isotope.min.js"></script>
<script src="/static/jquery.prettyPhoto.js"></script>
<script src="/static/main2.js"></script>
</body>
</html>
models.py
from django.db import models
from django.template.defaultfilters import slugify
from ckeditor.fields import RichTextField
class Paper(models.Model):
title = models.CharField(max_length=200)
slug = models.SlugField()
description = models.CharField(max_length=300)
large_description = RichTextField(max_length=3000)
def __str__(self):
return self.title
def save_in(self):
if not self.id:
self.slug = slugify(self.title)
super(test, self).save()
答案 0 :(得分:1)
问题在于您的nav.html
{% for slug in paper.slug %}
<a href="{% url 'detail' slug=paper.slug %}">{{ paper.title }}</a>
{% endfor %}
在那一行中你正在循环一个字符串,你应该把它放在那里:
{% for paper in paper_list %}
<a href="{% url 'detail' slug=paper.slug %}">{{ paper.title }}</a>
{% endfor %}