2
ブログの基本的な開始点は、header.htmlから拡張されたpost_list.htmlのデータベースのブログ記事をリストアップしています。ヘッダーの変数をスローガンとして取得しようとしていますが、これは機能しません。Django変数がヘッダーセクションに表示されない
header.html - これは管理ページから入力したコンテンツを持っているさ「propaganda.slogan」なしでレンダリング:
<!DOCTYPE html>
<html lang="en">
<head>
<title>hey!</title>
<meta charset="utf-8" />
{% load staticfiles %}
<link rel="stylesheet" href="{% static 'blog/css/bulma.css' %}" type="text/css"/>
</head>
<body>
<section class="hero is-success is-bold">
<div class="hero-body">
<div class="container">
{% block slogan %}
<ul>
{% for propaganda in propagandas %}
<li>{{ propaganda.slogan }}</li>
{% endfor %}
</ul>
{% endblock %}
<h1 class="title">
My weblog
</h1>
</div>
</div>
</section>
{% block content %}
{% endblock %}
</body>
</html>
post_list.htmlはheader.htmlを拡張したモデルからの投稿の一覧が表示されます.py:
{% extends "blog/header.html" %}
{% block content %}
{% for post in posts %}
<section class="section">
<div class="container">
<h1 class="title"><a href="#">{{ post.title }}</a></h1>
<p>{{ post.summary|linebreaksbr }}</p>
<p>published: {{ post.last_edited }}</p>
</div>
</section>
{% endfor %}
{% endblock %}
models.pyは次のようになります。最後に
from django.db import models
from django.utils import timezone
# Create your models here.
class Propaganda(models.Model):
slogan = models.CharField(max_length=140, blank=True, null=True)
def __str__(self):
return self.slogan
class Post(models.Model):
title = models.CharField(max_length=140, blank=False, null=False)
content = models.TextField()
summary = models.CharField(max_length=500)
created_date = models.DateTimeField()
last_edited = models.DateTimeField()
def __str__(self):
return self.title
、views.p yは次のとおりです。
from django.shortcuts import render
from .models import Post, Propaganda
# Create your views here.
def post_list(request):
posts = Post.objects.all()
return render(request, 'blog/post_list.html', {'posts': posts})
def header(request):
propagandas = Propaganda.objects.all()
return render(request, 'blog/header.html', {'propagandas': propagandas})
は、なぜ私はpost_list.htmlにポストのタイトル、概要、および日付のリストを取得することができますが、私は、ヘッダーに宣伝スローガンのリストを取得することはできませんか?
私には、それはほとんど同じコードのように見えますか?
私はdevのサーバーから、または、ブラウザにエラーを取得していない:(
は、私が取得していますと、現在のテンプレートは「post_list」である理由あなたは私に説明することができ、これは働いていた、ありがとうヘッダー "header.html"の変数の値は?私はテンプレートがヘッダーテンプレートだと思っていたでしょう。 e私はpost_listのためにヘッダーの後ろで開始されるビューを持っていますが、それにスローガンを加えてヘッダに現れます!あなたはすぐにエラーをキャッチしたが、私には意味をなさない。私は1つのファイルであるビューを構築しているようで、views.pyで単一のビューを作成すると、ヘッダ内のオブジェクトを取得できますか? –
['include'](https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#include):*テンプレートを読み込み、**現在のコンテキスト**でレンダリングします。*現在のコンテキストは 'post_list'ビューによって提供されています。これは今までは宣伝のリストを提供していません。インクルードされたテンプレートは、別のビューを持っているとは思わないでください。 –