回答編集履歴

4

紐付ける

2021/11/24 03:18

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -10,9 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- ###ビュー上の展開元をrenderメソッドに合わせる
14
-
15
- テンプレート上のrenderメソッドを紐付けて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます。
13
+ テンプレート上のrenderメソッドを紐付けて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせようにします。
16
14
 
17
15
 
18
16
 

3

テンプレートも変更が必要なようです

2021/11/24 03:18

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -12,9 +12,15 @@
12
12
 
13
13
  ###ビュー上の展開元をrenderメソッドに合わせる
14
14
 
15
- テンプレートはそままにしおいて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます。
15
+ テンプレートrenderメソッドを紐付けて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます。
16
16
 
17
17
 
18
+
19
+ ```py
20
+
21
+ return render(request, template_name, {'options':options})
22
+
23
+ ```
18
24
 
19
25
 
20
26
 

2

方法1の削除

2021/11/24 02:36

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -2,47 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- ので二通りのいずれか方法対応でるはず
5
+ オブジェクトoptions中に指定したtownsはあくまoptions.townsという包含関係プロパティに過ぎませんので、現状だとテンプレートとビューの変数が紐付てません。renderメソッド第三引数は変数をビュー上に返す役割を持っているの、それを把握しておましょう
6
6
 
7
7
 
8
8
 
9
- ###renderメソッドで返す変数をビュー上の変数名に合わせる
10
-
11
-
12
-
13
- ```py
14
-
15
-
16
-
17
- return render(request, template_name, {'towns':options})
18
-
19
-
20
-
21
- ```
22
-
23
-
24
-
25
- ```html
26
-
27
- <select name="select_town">
28
-
29
- <option value="">選択してください</option>
30
-
31
- {% for town in towns %}
32
-
33
- <option>{{town.towns}}</option>
34
-
35
- {% endfor %}
36
-
37
- </select>
9
+ なので以下の方法で対応できるはず。
38
-
39
- ```
40
10
 
41
11
 
42
12
 
43
13
  ###ビュー上の展開元をrenderメソッドに合わせる
44
14
 
45
- あるいはテンプレートはそのままにしておいて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます。
15
+ テンプレートはそのままにしておいて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます。
46
16
 
47
17
 
48
18
 
@@ -63,7 +33,3 @@
63
33
  </select>
64
34
 
65
35
  ```
66
-
67
-
68
-
69
- オブジェクトoptionsの中に指定したtownsはあくまでoptions.townsという包含関係のプロパティに過ぎませんので、現状だとテンプレートとビューの変数が紐付いてません。

1

補足

2021/11/24 01:27

投稿

FKM
FKM

スコア3647

test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
 
4
4
 
5
+ なので二通りのいずれかの方法で対応できるはず。
5
6
 
6
7
 
8
+
7
- ###場合はこの変数は別定義が必要
9
+ ###renderメソッドで返す変数をビュー上の変数名に合わせる
10
+
11
+
8
12
 
9
13
  ```py
10
14
 
@@ -18,9 +22,27 @@
18
22
 
19
23
 
20
24
 
21
- ###別解
25
+ ```html
22
26
 
27
+ <select name="select_town">
28
+
29
+ <option value="">選択してください</option>
30
+
31
+ {% for town in towns %}
32
+
33
+ <option>{{town.towns}}</option>
34
+
35
+ {% endfor %}
36
+
37
+ </select>
38
+
39
+ ```
40
+
41
+
42
+
43
+ ###ビュー上の展開元をrenderメソッドに合わせる
44
+
23
- あるいはテンプレートはそのままにしておいて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせ
45
+ あるいはテンプレートはそのままにしておいて、ビュー上のfor構文の中で展開元はoptions.townsなのでそれに合わせます
24
46
 
25
47
 
26
48