質問編集履歴

1

質問の仕方を変えました。

2019/01/24 08:32

投稿

hiranohirano
hiranohirano

スコア33

test CHANGED
@@ -1 +1 @@
1
- django、テンプレート内のurlのオプションの数について
1
+ django、CreateView内のmodelをテンプレートき渡す方法はありますか?
test CHANGED
@@ -1,42 +1,78 @@
1
+ ListViewやUpdateViewにmodelを指定すると、
2
+
1
- Djangoドキュメントの以下の箇所で分からなことがあります。
3
+ プレー内でそmodelが呼び出せると思います。
2
4
 
3
5
 
4
6
 
7
+ 例えば、下記のようなモデル、下記のようなListViewの場合、
8
+
5
- [組み込みタグとフィルタurl](https://docs.djangoproject.com/ja/1.11/ref/templates/builtins/#url)
9
+ テンプレートで{{ publisher_list }}を呼び出せます。
6
10
 
7
11
 
8
12
 
13
+ models.py
14
+
15
+ ```python
16
+
17
+ class Publisher(models.Model):
18
+
9
- djangoのテンプレート内のurlでは、第一引数の'name'の他に、オプションの引数を取ることができると思います(この場合、client.id)。
19
+ name = models.CharField(max_length=30)
10
20
 
11
21
 
12
22
 
23
+ def __str__(self):
24
+
25
+ return self.name
26
+
27
+ ```
28
+
13
- urls.py
29
+ view.py
14
30
 
15
31
  ```python
16
32
 
17
- ('^client/([0-9]+)/$', app_views.client, name='app-views-client')
33
+ from django.views.generic import ListView
34
+
35
+ from books.models import Publisher
36
+
37
+
38
+
39
+ class PublisherList(ListView):
40
+
41
+ model = Publisher
18
42
 
19
43
  ```
20
44
 
21
- テンプレート内
45
+ publisher_list.html
22
46
 
23
- ```python
47
+ ```html
24
48
 
49
+ {% extends "base.html" %}
50
+
51
+
52
+
53
+ {% block content %}
54
+
55
+ <h2>Publishers</h2>
56
+
57
+ <ul>
58
+
25
- {% url 'app-views-client' client.id %}
59
+ {% for publisher in publisher_list %}
60
+
61
+ <li>{{ publisher.name }}</li>
62
+
63
+ {% endfor %}
64
+
65
+ </ul>
66
+
67
+ {% endblock %}
26
68
 
27
69
  ```
28
70
 
29
- この、"client.id"の部分は、URL の引数として指定されているのかと思いますが、
30
-
31
- "client"の部分は何を参照しているのでしょうか?
32
71
 
33
72
 
73
+ CreateViewの場合、ListViewやUpdateViewと違って、このような呼び出しができないと思うのですが、
34
74
 
35
- view内で指定したmodelでしょうか?
36
-
37
- 上記場合、models.pyclientといクラスがあって、そのIDを指してるのしょうか?
75
+ ようすればテンプレートに引き渡せるよになるか知りたいです。
38
-
39
-
40
76
 
41
77
 
42
78