質問編集履歴

1

質問の全体的な修正

2019/02/04 00:31

投稿

sr2460
sr2460

スコア50

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,15 @@
2
2
 
3
3
 
4
4
 
5
+ コメントフォーム。コメントの表示。いいねボタンを一覧にしてwebアプリケーションを制作しています。
6
+
7
+ ![イメージ説明](e6164e16d1e1f3ec38a0cc0310fb1d9b.png)
8
+
9
+
10
+
5
- フォーム送信、リダイレクトし際にフォーム文章はきちん消去され、かつページの一番上にリダイレクトさるようにしたいです。
11
+ いいねボタンしたurlでformを送信するとページの一番上ではなく途中遷移してしまうのでそを解決したいです。
12
+
13
+
6
14
 
7
15
 
8
16
 
@@ -30,7 +38,315 @@
30
38
 
31
39
 
32
40
 
33
- good/<int:next>/にリダイレクトする際には
41
+
42
+
43
+ good関数でいいねボタンを押すと数値が1増えるようにしています。
44
+
45
+ ```
46
+
47
+
48
+
49
+ def good(request, pk):
50
+
51
+ """いいねボタンをクリック."""
52
+
53
+ post = get_object_or_404(Post, pk=pk)
54
+
55
+ if request.method == 'POST':
56
+
57
+ # データの新規追加
58
+
59
+ post.good += 1
60
+
61
+ post.save()
62
+
63
+ return redirect('board:index', next=pk)
64
+
65
+
66
+
67
+
68
+
69
+ ```
70
+
71
+
72
+
73
+ そのまま元のページに戻るだけなら
74
+
75
+ ```
76
+
77
+ return redirect('board:board')
78
+
79
+ ```
80
+
81
+ で構わないのですが、
82
+
83
+ いいねボタンを押した場所にリダイレクトをさせたかったのでリダイレクトを変更し、<br>
84
+
85
+ ```
86
+
87
+ return redirect('board:index', next=pk)
88
+
89
+
90
+
91
+ ```
92
+
93
+ <br>
94
+
95
+ 以下のパスに遷移をさせました。
96
+
97
+ ```
98
+
99
+ path('good/<int:next>/', views.index, name='index'),
100
+
101
+ ```
102
+
103
+
104
+
105
+ views.indexは以下のようになっており、
106
+
107
+ ```python
108
+
109
+
110
+
111
+ def index(request, next=None):
112
+
113
+ form = PostForm(request.POST or None)
114
+
115
+ question = Question.objects.all()
116
+
117
+ post_list = Post.objects.order_by('-date')
118
+
119
+
120
+
121
+ if request.method == 'POST' and form.is_valid():
122
+
123
+ form.save()
124
+
125
+ return redirect('board':board)
126
+
127
+
128
+
129
+ context = {
130
+
131
+ 'next': next,
132
+
133
+ 'question': question,
134
+
135
+ 'post_list': post_list,
136
+
137
+ 'form': form,
138
+
139
+ }
140
+
141
+
142
+
143
+ return render(request, 'board/board.html', context)
144
+
145
+
146
+
147
+ ```
148
+
149
+
150
+
151
+ 以下のhtmlが表示できるようにしております。
152
+
153
+ ```
154
+
155
+
156
+
157
+ {% extends 'board/base.html' %}
158
+
159
+
160
+
161
+ {% block content %}
162
+
163
+
164
+
165
+ {% load static %}
166
+
167
+
168
+
169
+ <link rel="stylesheet" type="text/css" href="{% static 'board/style.css' %}">
170
+
171
+
172
+
173
+
174
+
175
+ <div class="alert alert-primary" role="alert">
176
+
177
+ <strong><p class="w-normal"><a href="http://localhost:8000/polls/">現在投票中のアンケート一覧{% for questions in question %}{% if questions.is_date_limit %}<li>{{ questions.question_text }}{% endif %}{% endfor %}</li></a></p></strong>
178
+
179
+ </div>
180
+
181
+
182
+
183
+
184
+
185
+
186
+
187
+ <div class="mb-5">
188
+
189
+ <div class="ml-md-2">
190
+
191
+ <form action="" method="POST" enctype="multipart/form-data">
192
+
193
+ {{ form.as_p }}
194
+
195
+ <button type="submit">送信</button>
196
+
197
+ {% csrf_token %}
198
+
199
+ </form>
200
+
201
+
202
+
203
+
204
+
205
+ </div>
206
+
207
+ </div>
208
+
209
+
210
+
211
+ {% for post in post_list %}
212
+
213
+
214
+
215
+
216
+
217
+
218
+
219
+ <div class="alert alert-success" role="alert"><p class="w-normal"><strong>{{ post.name }}</strong> さん</p></div>
220
+
221
+ <div class="mb-2">
222
+
223
+ <div class="ml-md-2">
224
+
225
+ <p class="w-normal">{{ post.text | linebreaksbr }}</p>
226
+
227
+ </div>
228
+
229
+ {% if post.file %}
230
+
231
+ <p><img src="{{ post.file.url }}"></p>
232
+
233
+
234
+
235
+ {% endif %}
236
+
237
+
238
+
239
+ <div id="{{ post.pk }}" class="ml-md-2">
240
+
241
+ <p>{{ post.date }}</p>
242
+
243
+
244
+
245
+
246
+
247
+ <form action="{% url 'board:good' post.pk %}" method="post">
248
+
249
+ {% csrf_token %}
250
+
251
+ <input type="submit" name="good" value="いいね">({{ post.good }} いいね)
252
+
253
+ </form>
254
+
255
+ </div>
256
+
257
+
258
+
259
+
260
+
261
+ {% endfor %}
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+ {% include 'board/page4.html' %}
270
+
271
+
272
+
273
+
274
+
275
+
276
+
277
+ <script>
278
+
279
+ {% if next %}
280
+
281
+ window.location.href += '#{{ next }}';
282
+
283
+ {% endif %}
284
+
285
+ </script>
286
+
287
+
288
+
289
+
290
+
291
+ </div>
292
+
293
+
294
+
295
+
296
+
297
+
298
+
299
+
300
+
301
+
302
+
303
+ {% endblock %}
304
+
305
+
306
+
307
+
308
+
309
+ ```
310
+
311
+
312
+
313
+ <br>
314
+
315
+ 以下のスプリクトがあるため
316
+
317
+
318
+
319
+ ```
320
+
321
+
322
+
323
+ <script>
324
+
325
+ {% if next %}
326
+
327
+ window.location.href += '#{{ next }}';
328
+
329
+ {% endif %}
330
+
331
+ </script>
332
+
333
+
334
+
335
+
336
+
337
+ ```
338
+
339
+
340
+
341
+ <br>
342
+
343
+ <br>
344
+
345
+
346
+
347
+ リダイレクトした際のURLはこのようになっており、
348
+
349
+
34
350
 
35
351
 
36
352
 
@@ -44,23 +360,17 @@
44
360
 
45
361
 
46
362
 
47
- ページの途中に遷移させる使用のため#70(この数字は可変的)がついています。
363
+ ページの途中に遷移させる仕様実現のため#70(この数字は可変的)がついています。
364
+
365
+
366
+
48
-
367
+ そしてこのリダイレクトしたページは
368
+
369
+
370
+
49
- htmlを表示させる関数は以下のようになっております。
371
+ 上記関数def indexで
50
-
51
-
52
-
372
+
53
- ```python
373
+ ```
54
-
55
-
56
-
57
- def index(request, next=None):
58
-
59
- form = PostForm(request.POST or None)
60
-
61
- question = Question.objects.all()
62
-
63
- post_list = Post.objects.order_by('-date')
64
374
 
65
375
 
66
376
 
@@ -72,49 +382,11 @@
72
382
 
73
383
 
74
384
 
75
- context = {
76
-
77
- 'next': next,
78
-
79
- 'question': question,
80
-
81
- 'post_list': post_list,
82
-
83
- 'form': form,
84
-
85
- }
86
-
87
-
88
-
89
- return render(request, 'board/board.html', context)
90
-
91
-
92
-
93
- ```
385
+ ```
94
-
95
-
96
-
97
- 上記関数def indexにおいて
386
+
98
-
99
- ```
387
+
100
-
101
-
102
-
388
+
103
- if request.method == 'POST' and form.is_valid():
389
+ と書いているためフォームの送信が可能なのですが、フォームの送信をしても、以下のようにリダイレクト先を設定しているにも関わらず。
104
-
105
- form.save()
106
-
107
- return redirect('board':board)
108
-
109
-
110
-
111
- ```
112
-
113
-
114
-
115
- としてフォームを送信できるようにしているのですが
116
-
117
-
118
390
 
119
391
 
120
392
 
@@ -130,7 +402,7 @@
130
402
 
131
403
 
132
404
 
133
- ても
405
+ 以下のようなURLにリダイレクト
134
406
 
135
407
 
136
408
 
@@ -144,9 +416,7 @@
144
416
 
145
417
 
146
418
 
147
- のような形で#が残ってしまいます。
419
+ #数字)が残ってしまいます。本来であればURLは
148
-
149
- ここでのリダイレクトは#70を削除し
150
420
 
151
421
  ```
152
422
 
@@ -154,11 +424,19 @@
154
424
 
155
425
  ```
156
426
 
157
-
427
+ pathとしては
428
+
158
-
429
+ ```
430
+
431
+ path('', views.ListView.as_view(), name='board'),
432
+
433
+ ```
434
+
435
+
436
+
437
+ にリダイレクトをするはずなのですが、現状は(#数字)という形が残ってしまっています。
438
+
159
- で行いたいどのような方法があるのでしょうか
439
+ 数字をリダイレクト時に削除るにはどのようにすれば良いでしょうか
160
-
161
-
162
440
 
163
441
 
164
442
 
@@ -192,23 +470,7 @@
192
470
 
193
471
  このようなURLに遷移。かつページの途中でなく一番上に遷移してくれます。
194
472
 
195
- ただしこれだと
196
-
197
-
198
-
199
- ```
200
-
201
- if request.method == 'POST' and form.is_valid():
202
-
203
- form.save()
204
-
205
-
206
-
207
- ```
208
-
209
-
210
-
211
- 送信した文章が消えずに残るという問題があります。
473
+ ただしこれだとフォームから送信した文章が消えずに残るという問題があります。
212
474
 
213
475
 
214
476