我在我的Django(1.9.2)项目中有一个简单的视图、表单和2个模板。被传递给视图的模板非常有效,可以迭代并显示所需值。
但是,当我想要将此模板包含到另一个模板中时,迭代不会发生。我尝试使用“{% include with %}”,但可能我做错了。
用于主页的模板位于项目模板文件夹中,而要包含的模板位于应用程序内。
news/models.py:
在检查 http://127.0.0.1:8000/news/ 时一切正常,但在 http://127.0.0.1:8000/ 上只显示了:D。
我使用了cookiecutter-django的Cookie-Cutter Django作为基础。我应该在哪里定义主页视图呢?
但是,当我想要将此模板包含到另一个模板中时,迭代不会发生。我尝试使用“{% include with %}”,但可能我做错了。
用于主页的模板位于项目模板文件夹中,而要包含的模板位于应用程序内。
news/models.py:
class News(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
body = models.TextField()
posted = models.DateField(db_index=True, auto_now_add=True)
def __unicode__(self):
return '%s' % self.title
news/views.py:
from news.models import News
from django.shortcuts import render
from django.template import RequestContext
def news(request):
posts = News.objects.all()
return render(request, 'news.html',{'posts':posts })
news/templates/news.html:
{% load i18n %}
{% block content %}
<h2>News</h2>
:D
{% for post in posts %}
{{ post.title }}
{{ post.body }}
{% endfor %}
{% endblock content %}
templates/home.html:
{% extends "base.html" %}
{% load i18n %}
{% block content %}
<section id="portfolio">
<div class="container">
{% include "news.html" with posts=posts %}
</div>
</section>
{% include "footer.html" %}
{% endblock content %}
在检查 http://127.0.0.1:8000/news/ 时一切正常,但在 http://127.0.0.1:8000/ 上只显示了:D。
不知道如何解决这个问题。谢谢:^)
编辑:
对于主页,我实际上只使用模板,在urls中它看起来像这样:
url(r'^$', TemplateView.as_view(template_name='pages/home.html') , name="home")
我使用了cookiecutter-django的Cookie-Cutter Django作为基础。我应该在哪里定义主页视图呢?