Django 1.10でブログ/ポートフォリオのハイブリッドWebサイトを構築しています。 Mysiteに加えて、ブログとポートフォリオという2つのアプリがあります。ブログ/テンプレート内/ブログとポートフォリオ(最新の15のブログ記事と5つの最新のポートフォリオプロジェクト)のコンテンツを表示するindex.htmlがあります。Djangoマルチレベルの拡張が表示されない
だから、index.htmlページは次のようになります。あなたは、データが表示されない見ることができるように
。ただし、ブログページとポートフォリオページに移動すると表示されます。たとえば、ブログのページ:
私はこの問題はMULTレベルに関連していることを把握しています私が起こっていることを拡張します。ブログとポートフォリオの両方のページにはデータベースのコンテンツが表示されるため、モデルはO.Kだと思うが、何かがビュー上にある。 index.htmlはbase_generic.htmlテンプレートを拡張し、recent_blog_posts.htmlとrecent_portfolio_pieces.htmlはindex.htmlを拡張します。
この問題を解決する方法がわかりません。私が間違っていることを示唆している?
プロジェクト構造
mysite/
---blog/
------static/
---------css/
---------images/
------------blogpostimages/
------------favicon.ico
------templates/
---------blog/
------------blog_post.html
------------blog_list.html
------------recent_blog_posts.html
---------base_generic.html
---------index.html
---------bio.html
---------resume.html
------admin.py
------apps.py
------models.py
------tests.py
------urls.py
------views.py
---portfolio/
------static/
---------css/
---------images/
------------portfoliopieceimages/
------templates/
---------portfolio/
------------portfolio_piece.html
------------portfolio_list.html
------------recent_portfolio_pieces.html
------admin.py
------apps.py
------models.py
------tests.py
------urls.py
------views.py
---mysite/
------settings.py
------urls.py
------wsgi.py
manage.py
db.sqlite3
requirements.txt
ブログ/ views.py
from django.shortcuts import render
from django.views import generic
# Create your views here.
from .models import Blog
def index(request):
"""
View function for home page of site.
"""
# Generate most recent blog post
title = Blog.objects.all()
post_date = Blog.objects.all()
get_absolute_url = Blog.objects.all()
# Render the HTML template index.html with the data in the context variable.
return render(
request,
'index.html',
context={'title': title,
'post_date': post_date,
'get_absolute_url': get_absolute_url,
}
)
def recent_blog_posts.html(request):
blog = Blog.objects.order_by('-post_date')[0:11]
return render(request, 'index.html', {'blog': blog})
class BlogListView(generic.ListView):
"""
Generic class-based view for a list of blog posts.
"""
model = Blog
paginate_by = 20
def get_queryset(self):
return Blog.objects.order_by('-post_date')
class BlogDetailView(generic.DetailView):
"""
Generic class-based detail view for a blog post.
"""
model = Blog
def bio(request):
return render(
request, 'bio.html'
)
def resume(request):
return render(
request, 'resume.html'
)
index.htmlを
<div>
<h2>Recent Blog Posts</h2>
<div>
{% block blogs %}
{% if blog_list %}
{% for blog in blog_list %}
<article>
<header>
<h4><small>{{blog.post_date}} » </small><a href="{{ blog.get_absolute_url }}">{{ blog.title }}</a></h4>
</header>
</article>
{% endfor %}
{% else %}
<p>Unfortunately, there are no blog posts yet.</p>
{% endif %}
</div>
{% endblock %}
</div>
<div>
<h2>Portfolio</h2>
{% if portfolio %}
{% for portfolio in portfolio %}
<div class="col-xs-12 col-sm-6 thumb">
<a class="thumbnail" href="{{ portfolio.get_absolute_url }}">
{% load static %}
<img class="img-responsive" src="{{ portfolio.cover_image }}" alt="">
<p>{{ portfolio.title }}</p>
<p>{{ portfolio.client_name }}</p>
</a>
</div>
{% endfor %}
{% else %}
<div>
<p>Unfortunately, there are no portfolio pieces yet.</p>
</div>
{% endif %}
あなたのテンプレートでは 'blog_list'コンテキスト変数を使用しています。しかし、あなたのインデックスビューでは、コンテキストリターンはこの変数を含んでいません。 title、post_date、およびget_absolute_urlがあります。このテンプレートの変数 'portofolio'も同じです。 PS:コードplsの字下げを修正しました – Wilfried
@Wilfriedありがとうございました!これはうまくいきました。あなたがそれを答えに変えれば私はそれを選択します – cssidy
完了。あなたを助けてうれしい。そして、厳密になる。それは良い開発者の資産です;) – Wilfried