質問編集履歴

1

具体的なコードの追加と、文面の見直し

2021/07/02 07:29

投稿

tomoysh
tomoysh

スコア42

test CHANGED
@@ -1 +1 @@
1
- テンプレートタグを使ったリンクの貼り方について
1
+ djangoでurlテンプレートタグを使ったリンクの貼り方
test CHANGED
@@ -1,18 +1,40 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ urlのキーワードを使ってテンプレートで遷移先を指定したい。
4
+
5
+
6
+
7
+ 自分なりに調べてみたのですが、解決できなかったので教えていただければ幸いです。
8
+
9
+
10
+
11
+ urls.pyの<str:name_en>で受け取ったキーワードでfilterをかけて、その一覧を表示するリンクを作りたいです。
12
+
13
+ templateの<a>タグに{%%}の記法を使って試してみましたが、下記のエラーによりうまくいきませんでした。
14
+
15
+
16
+
17
+
18
+
19
+
20
+
21
+ ### 発生している問題・エラーメッセージ
22
+
23
+
24
+
3
- djangoでテンプレートタグを使って、templateにフィルタリングしたリンクを貼りたい
25
+ NoReverseMatch at /category_index/Trip
26
+
27
+ Reverse for 'category_index' with no arguments not found. 1 pattern(s) tried: ['category_index/(?P<name_en>[^/]+)$']
4
28
 
5
29
 
6
30
 
7
31
  ```ここに言語を入力
8
32
 
9
- class CategoryTrip(ListView):
33
+ class CategoryIndex(ListView):
10
34
 
11
- template_name = 'vlogapp/category_list.html'
35
+ template_name = 'vlogapp/index_list.html'
12
36
 
13
- paginate_by = 2
37
+ paginate_by = 2
14
-
15
-
16
38
 
17
39
  def get_queryset(self, **kwargs):
18
40
 
@@ -20,40 +42,76 @@
20
42
 
21
43
  return queryset
22
44
 
45
+ ```
23
46
 
47
+ ```ここに言語を入力
48
+
49
+ path('category_index/<str:name_en>', CategoryIndex.as_view(), name='category_index'),
24
50
 
25
51
  ```
26
52
 
27
- 上記のコードで作られたquerysetを、templateファイルの
28
-
29
53
  ```ここに言語を入力
30
54
 
31
- <a class="nav-link" href="{% url 'category_list' %}">Category</a>
55
+ <ul class="navbar-nav me-auto mb-2 mb-lg-0">
32
56
 
33
- <a class="nav-link" href="{% url 'category_list' %}">Category</a>
57
+ <li class="nav-item active">
34
58
 
35
- ```
59
+ <a class="nav-link" aria-current="page" href="{% url 'paging' %}">Home</a>
36
60
 
37
- {% url 'category_list' %}の部分に渡し、カテゴリ毎の一覧ページを表示したい。
61
+ </li>
38
62
 
39
- 該当のurls.pyは以下のようになります。
63
+ <li class="nav-item">
40
64
 
65
+ <a class="nav-link" href="">Programing</a>
41
66
 
67
+ </li>
42
68
 
43
- ```ここに言語を入力
69
+ <li class="nav-item">
44
70
 
45
- path('category_list/<str:name_en>', CategoryTrip.as_view(), name='category_list'),
71
+ <a class="nav-link" href="{% url 'category_index' %}">Clothes</a>
72
+
73
+ </li>
74
+
75
+ <li class="nav-item">
76
+
77
+ <a class="nav-link" href="">Trip</a>
46
78
 
47
79
 
48
80
 
49
81
  ```
50
82
 
51
- urls.py で受け取っ<str:name_en>のカテゴリ名を入れてアクセスする、それぞれのカテゴリごとの内容一覧ページがちゃんと表示されるのでカテゴリのページは問題なく作成できていると思います。
83
+ ### 試し1
52
84
 
53
85
 
54
86
 
55
87
 
56
88
 
57
- urls.py で受け取った<str:name_en>値をそのままtemplateタグの引数として、
89
+ 試しにclassbasedViewで作った以下View
58
90
 
91
+ ```ここに言語を入力
92
+
93
+ class List(ListView):
94
+
95
+ model = Category
96
+
97
+ ordering = ['-created_at']
98
+
99
+ paginate_by = 2
100
+
101
+ template_name = 'vlogapp/list.html'
102
+
103
+
104
+
105
+ ```
106
+
107
+ を{% url ' viewの名前' %}をtemplateに貼り付けたところ問題なく機能した。
108
+
109
+ ###試したこと2
110
+
111
+
112
+
113
+ 直接、http://127.0.0.1:8000/category_index/Trip
114
+
115
+    http://127.0.0.1:8000/category_index/Clothesの様にリクエストを送ると、
116
+
59
- それぞれカテゴリの一覧ページのリンクを貼る記述をご教授ください。
117
+ 意図したページ(categoryごとの一覧ページ)が表示されるでデータの取得には問題な様に思います