teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

回答を追加

2020/05/11 23:47

投稿

hasami
hasami

スコア1277

answer CHANGED
@@ -9,4 +9,25 @@
9
9
 
10
10
  ```html
11
11
  {% url 'app_name:spam' pk=item.pk prefecture_name=prefecture.name %}
12
+ ```
13
+
14
+ 都道府県でViewを分けたいのであれば、テンプレートタグでURLを取得する方法はどうでしょうか?
15
+
16
+ ```python
17
+ # app/templatetags/spam.py
18
+ from django import template
19
+ register = template.Library()
20
+ @register.simple_tag
21
+ def get_uri(item: Item, prefecture_name: str) -> str:
22
+ view_name = f'app:{prefecture_name}'
23
+ return reverse(view_name, kwargs={'pk': item.id,})
24
+ ```
25
+
26
+ ```html
27
+ {% load spam %}
28
+ {% for item in items %}
29
+ {% for prefecture in prefectures %}
30
+ <a href="{% get_uri item prefecture %}">{{ item.name }} | {{ prefecture.name }}</a>
31
+ {% endfor %}
32
+ {% endfor %}
12
33
  ```

1

回答の修正

2020/05/11 23:47

投稿

hasami
hasami

スコア1277

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  ```python
4
4
  # urls.py
5
5
  urlpatterns = [
6
- path('item/<int:pk>/<str:pref_name>/', SpamView.as_view(), name='spam'),
6
+ path('item/<int:pk>/<str:prefecture_name>/', SpamView.as_view(), name='spam'),
7
7
  ]
8
8
  ```
9
9