質問編集履歴

4

説明文を大幅に書き換えました。

2017/09/14 07:55

投稿

superyamadaman
superyamadaman

スコア13

test CHANGED
File without changes
test CHANGED
@@ -2,59 +2,21 @@
2
2
 
3
3
 
4
4
 
5
- この作業において、自分が使用予定のbootstrapテーマのhtmlが以下のような構造になっているのですが、
6
-
7
- この構造において、{% for post in posts %}などのループを使用して、{{ post.title }}に順々にブログのタイトルを当てはめていく方法が分かりません。
5
+ このブログ築において、自分が使用予定のbootstrapテーマのhtmlが以下のような構造になっているのですが、この構造において、{% for post in posts %}などのループを使用して、{{ post.title }}に順々にブログのタイトルを当てはめていく方法が分かりません。
8
6
 
9
7
 
10
8
 
11
- 下記がdjangoにおけるタイトルの表示を構成する最低限のファイル構成かと思うのですが、
12
-
13
- れらにどのような要素追加、もしくは変更すればよいでしょうか。
9
+ この方法ご教示頂けませんでしょうか。
14
10
 
15
11
 
16
12
 
17
- この解決策として、このhtml構成においてはループの使用が難しいのではないかと考え、{% for post in posts %}を外して、{{ post.title }}の部分に、フィルターや引数などを入れることを行ってみたのですが、うまくいきませんでした。
18
-
19
- 初心者ため、拙い質問で誠に恐れ入りますが、ご教示頂ければ嬉く思います。
13
+ 以下に問題説明用の簡単なサンプルコードとサイトのデザインイメージを記載致します。
20
14
 
21
15
 
22
16
 
17
+ ![イメージ説明](ad4f0e6670c8071a196329c0aea4001a.png)
18
+
23
19
  ```ここに言語を入力
24
-
25
- model.py
26
-
27
-
28
-
29
- class Post(models.Model):
30
-
31
- STATUS_CHOICES = (
32
-
33
- ('draft', 'Draft'),
34
-
35
- ('published', 'Published'),
36
-
37
- )
38
-
39
- title = models.CharField(max_length=250)
40
-
41
-
42
-
43
- view.py
44
-
45
-
46
-
47
- class PostListView(ListView):
48
-
49
- queryset = Post.published.all()
50
-
51
- context_object_name = 'posts'
52
-
53
- paginate_by = 10
54
-
55
- template_name = 't_env/post/list.html'
56
-
57
-
58
20
 
59
21
  list.html
60
22
 
@@ -90,10 +52,122 @@
90
52
 
91
53
  </body>
92
54
 
55
+ ```
93
56
 
57
+ gjangoにおいてブログの記事タイトルやサマリーをタグで当てはめる方法として、書籍やネット上記事では、ブログ記事のタイトルや著者、本文の要約部分を一括りにして、ループで挟む方法をよく見かけます。
58
+
59
+ この方法を参考にして、以下の3つの方法を行ってみたのですが、それぞれに問題があり、自分のやりたいことが実現できません。
60
+
61
+
62
+
63
+ 0. <div class="box-sample">をループで挟む方法。
64
+
65
+ →この方法の場合、添付画像のデザイン自体がループすることになり、自分の考えているデザインとは違ったデザインになってしまいます。
66
+
67
+
68
+
69
+ 0. {{ post.title }}のタイトルのすぐ上にある<div class="box-sample-*">にクラスを与え、一括りにしてループで挟む方法。
70
+
71
+ →例えば<div class="box-sample-1">を挟むと、<div class="box-sample-1">がループするので、デザインが崩れてしまいます。
72
+
73
+ 0. <div class="box-sample-1">や<div class="box-sample-2-2">などのそれぞれの要素ごとにループを適用する方法
74
+
75
+ →当然のことながら、各要素に最新の**同じ記事タイトル**が表示される結果になります。
76
+
77
+
78
+
79
+ 上記以外の解決策として、このhtml構成においてはループの使用がそもそも難しいと考え、ループで挟むことを止め、{{ post.title }}にフィルターや引数などを入れることで、ブログタイトルを順に表示させることはできないか考えました。この考えを基にして、適用できそうなフィルターや引数を探してみたのですが、見つけることができませんでした。
80
+
81
+
82
+
83
+ 下記にdjangoにおけるHTML以外のファイル構成と内容を記載致しますので、これらのファイルにどのような要素を追加、もしくは変更すればよいがご教示頂けませんでしょうか。
84
+
85
+
86
+
87
+ プログラミング初心者のため、誠に拙い説明で申し訳ございませんが、何卒ご教示のほど宜しくお願い致します。
88
+
89
+
90
+
91
+ ```ここに言語を入力
92
+
93
+ model.py
94
+
95
+
96
+
97
+ from django.db import models
98
+
99
+ from django.utils import timezone
100
+
101
+ from django.contrib.auth.models import User
102
+
103
+ from django.core.urlresolvers import reverse
104
+
105
+
106
+
107
+ class Post(models.Model):
108
+
109
+ STATUS_CHOICES = (
110
+
111
+ ('draft', 'Draft'),
112
+
113
+ ('published', 'Published'),
114
+
115
+ )
116
+
117
+ title = models.CharField(max_length=250)
118
+
119
+
120
+
121
+ class Meta:
122
+
123
+ ordering = ('-publish',)
124
+
125
+
126
+
127
+ def __str__(self):
128
+
129
+ return self.title
130
+
131
+
132
+
133
+ view.py
134
+
135
+
136
+
137
+ rom django.shortcuts import render, get_object_or_404
138
+
139
+ from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
140
+
141
+ from django.views.generic import ListView
142
+
143
+
144
+
145
+ class PostListView(ListView):
146
+
147
+ queryset = Post.published.all()
148
+
149
+ context_object_name = 'posts'
150
+
151
+ paginate_by = 10
152
+
153
+ template_name = 't_env/post/list.html'
154
+
155
+
156
+
157
+ def post_detail(request, year, month, day, post):
158
+
159
+ post = get_object_or_404(Post, slug=post,
160
+
161
+ status='published',
162
+
163
+ publish__year=year,
164
+
165
+ publish__month=month,
166
+
167
+ publish__day=day)
168
+
169
+ return render(request, 't_env/post/detail.html', {'post': post})
94
170
 
95
171
 
96
172
 
97
173
  ```
98
-
99
- ![イメージ説明](34545ee77f2e4b1f39bbc1d5e6a0ae4e.png)

3

説明に使用するhtmlを改め、htmlの出力後のイメージを追加しました。また、日本語の説明文を変更しました。

2017/09/14 07:55

投稿

superyamadaman
superyamadaman

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,16 +1,22 @@
1
- 現在、djangobootstrapを使用した簡単なブログサイトを構築中です。
1
+ 現在、djangoにおいてbootstrapを使用した簡単なブログサイトを構築中です。
2
-
3
- この作業において、自分が使用予定のbootstrapテーマのhtmlが少し複雑な構造になっているため、
4
-
5
- html内のループによる表示が難しいのではないかと考えています。
6
2
 
7
3
 
8
4
 
9
- ループを使用せずに、テンプレート上にブログタイトルを最新のものから順に表示しようとした場合、models.py または view.py において、配列に格納されたタイトルデタを一つづつ取り出して、html内にタグまたは変数を埋め込むことにり、それぞれの記事のタイトルを表示させることができないかと考えたのですが、実現方法が分かりません。
5
+ この作業おいて、自分が使用予定bootstrapマのhtmlが以下の構造になってのですが、
10
6
 
11
- 下記がdjangoにおけるタイトルの表示構成する最低限の要素と思うのですが、
7
+ この構造において、{% for post in posts %}などのループを使用して、{{ post.title }}順々にブログのタイトルを当てはめていく方法が分りません。
12
8
 
9
+
10
+
11
+ 下記がdjangoにおけるタイトルの表示を構成する最低限のファイル構成かと思うのですが、
12
+
13
- 下記以外にどのような要素を追加、もしくは変更すればよいでしょうか。
13
+ これらのにどのような要素を追加、もしくは変更すればよいでしょうか。
14
+
15
+
16
+
17
+ この解決策として、このhtml構成においてはループの使用が難しいのではないかと考え、{% for post in posts %}を外して、{{ post.title }}の部分に、フィルターや引数などを入れることを行ってみたのですが、うまくいきませんでした。
18
+
19
+ 初心者のため、拙い質問で誠に恐れ入りますが、ご教示頂ければ嬉しく思います。
14
20
 
15
21
 
16
22
 
@@ -50,46 +56,44 @@
50
56
 
51
57
 
52
58
 
53
- base.html
59
+ list.html
54
60
 
55
61
 
56
62
 
57
63
  <body>
58
64
 
59
- <div id="content">
65
+ <div class="box-sample">
60
66
 
61
- {% block content %}
67
+ <div class="box-sample-1">
62
68
 
69
+ <p>{{ post.title }} </p> <!--タイトルその1-->
70
+
63
- {% endblock %}
71
+ </div>
72
+
73
+ <div class="box-sample-2">
74
+
75
+ <div class="box-sample-2-1">
76
+
77
+ <p>{{ post.title }}</p> <!--タイトルその2-->
64
78
 
65
79
  </div>
80
+
81
+ <div class="box-sample-2-2">
82
+
83
+ <p>{{ post.title }}</p> <!--タイトルその3-->
84
+
85
+ </div>
86
+
87
+ </div>
88
+
89
+ </div>
66
90
 
67
91
  </body>
68
92
 
69
93
 
70
94
 
71
- list.html
72
-
73
-
74
-
75
- {% block content %}
76
-
77
-
78
-
79
- {% for post in posts %}
80
-
81
- <p>{{ post.title }}</p>
82
-
83
- {% endfor %}
84
-
85
-
86
-
87
- {% endblock %}
88
-
89
95
 
90
96
 
91
97
  ```
92
98
 
93
- 私の試行錯誤として、list.htmlの中の {% for post in posts %}を外したあと、{{ post.title }}の部分に、フィルターや引数などを設定するとうまくいくかと思ったのですが、うまくいきませんでした。
94
-
95
- 初心者のため、拙い質問で誠に恐れ入りますが、ご教示頂ければ嬉しく思います。
99
+ ![イメージ説明](34545ee77f2e4b1f39bbc1d5e6a0ae4e.png)

2

日本の説明文を改めました。

2017/09/14 06:32

投稿

superyamadaman
superyamadaman

スコア13

test CHANGED
@@ -1 +1 @@
1
- djangoとbootstrapを使用したブログサイトにおける、タイトル表示に関す質問
1
+ djangoのtemplate内において、loopを使わずにブログタイトルを1つづつ表示させ
test CHANGED
File without changes

1

説明が不足していたため、日本語の表現を少し改めました。

2017/09/13 15:11

投稿

superyamadaman
superyamadaman

スコア13

test CHANGED
File without changes
test CHANGED
@@ -1,16 +1,16 @@
1
1
  現在、djangoとbootstrapを使用した簡単なブログサイトを構築中です。
2
2
 
3
- この作業において、自分が使用予定のbootstrapテーマのhtmlが少し複雑な構造になっており
3
+ この作業において、自分が使用予定のbootstrapテーマのhtmlが少し複雑な構造になっているため
4
4
 
5
- html内のループによってブログのタイトルを表示させることができずに困っています。
5
+ html内のループによ表示が難しいのはないかと考えています。
6
6
 
7
7
 
8
8
 
9
- 問題解決方法として、配列に格納されたタイトルデータを一つづつ取り出して、html内にタグまたは変数を埋め込むことにより、それぞれの記事のタイトルを表示させることができないかと考えたのですが、実現方法が分かりません。
9
+ 仮にループを使用せずに、テンプレート上にブログタイトルを最新ものから順に表示しようとした場合、models.py または view.py において、配列に格納されたタイトルデータを一つづつ取り出して、html内にタグまたは変数を埋め込むことにより、それぞれの記事のタイトルを表示させることができないかと考えたのですが、実現方法が分かりません。
10
10
 
11
11
  下記がdjangoにおけるタイトルの表示を構成する最低限の要素かと思うのですが、
12
12
 
13
- 下記以外にどのような要素を追加すればよいでしょうか。
13
+ 下記以外にどのような要素を追加、もしくは変更すればよいでしょうか。
14
14
 
15
15
 
16
16
 
@@ -90,4 +90,6 @@
90
90
 
91
91
  ```
92
92
 
93
- {{ post.title }}の部分に、フィルターや引数などを設定するとうまくいくかと思ったのですが、うまくいきませんでした。初心者のため、拙い質問で誠に恐れ入りますが、ご教示頂ければ嬉しく思います。
93
+ 私の試行錯誤として、list.htmlの中の {% for post in posts %}を外したあと、{{ post.title }}の部分に、フィルターや引数などを設定するとうまくいくかと思ったのですが、うまくいきませんでした。
94
+
95
+ 初心者のため、拙い質問で誠に恐れ入りますが、ご教示頂ければ嬉しく思います。