質問編集履歴

2

エラー内容の修正

2020/12/01 09:29

投稿

Mr_PONPON_MARU
Mr_PONPON_MARU

スコア35

test CHANGED
File without changes
test CHANGED
@@ -2,13 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- Djangoで「https://<ホスト名>/mypage/<ユーザ名>」のようなアクセスでログイン中のマイページに行けるようにコードを書いていますが、下記のようにAttributeErrorが発生してしまいます。
5
+ Djangoで「https://<ホスト名>/mypage/<ユーザ名>」のようなアクセスでログイン中のマイページに行けるようにコードを書いていますが、下記のようにValueErrorが発生してしまいます。
6
6
 
7
7
 
8
8
 
9
- ユーザ名のようなstr型urlは設定ないのでしょうか?
9
+ DetailView継承したMyPageViewでルーティング関するクラス変数をオーバーライドしても、デフォルトルーティングに使われるpkが変数として利用されているままにってしまます。
10
10
 
11
+
12
+
11
- ともデタベース問題があるでしょうか...?
13
+ 他のQ&Aや公式を参考にしても、硫黄量を得らず、エラが改善されずどうしたら良いものか..
14
+
15
+
12
16
 
13
17
 
14
18
 
@@ -18,9 +22,9 @@
18
22
 
19
23
  ```
20
24
 
21
- AttributeError at /mypage/ユーザ名/
25
+ ValueError at /mypage/ユーザ名/
22
26
 
23
- 'str' object has no attribute '_default_manager'
27
+ Field 'id' expected a number but got 'ユーザ名'.
24
28
 
25
29
  Request Method: GET
26
30
 
@@ -28,11 +32,11 @@
28
32
 
29
33
  Django Version: 3.0.3
30
34
 
31
- Exception Type: AttributeError
35
+ Exception Type: ValueError
32
36
 
33
37
  Exception Value:
34
38
 
35
- 'str' object has no attribute '_default_manager'
39
+ Field 'id' expected a number but got 'ユーザ名'.
36
40
 
37
41
  ```
38
42
 
@@ -74,11 +78,7 @@
74
78
 
75
79
  from django.views import generic
76
80
 
77
- from django.urls import reverse_lazy
78
-
79
- from django.contrib import messages
81
+ from accounts.models import CustomUser
80
-
81
- import logging
82
82
 
83
83
 
84
84
 
@@ -86,7 +86,7 @@
86
86
 
87
87
  template_name = 'mypage.html'
88
88
 
89
- model = 'CustomUser'
89
+ model = CustomUser
90
90
 
91
91
  slug_field = 'username' #モデルのフィールド名
92
92
 
@@ -126,27 +126,25 @@
126
126
 
127
127
  ```
128
128
 
129
- <a class="dropdown-item" href="{% url 'article:mypage' user.get_username %}">Profile</a>
129
+ <a class="dropdown-item" href="{% url 'article:mypage' user.username %}">Profile</a>
130
130
 
131
131
  ```
132
132
 
133
133
 
134
134
 
135
- ### 試してみたこと
135
+ ### 調べてみたこと
136
136
 
137
137
 
138
138
 
139
- - urlpatternsのpath()関数引数をpath('mypage/<**slug:username**>/', views.MyPageView.as_view(), name='mypage')とした
139
+ url.pyでデフォルトルーティングはpkとなっており、下記DetailViewのクラス変数をオーバーライドするとルーティングにpk以外を使用できるようになる。
140
-
141
- →同様のエラーとなってしまう
142
140
 
143
141
 
144
142
 
145
- -テンプレートのurlタグを
143
+ slug_field(モデルのフィールド名)
146
144
 
147
- <a class="dropdown-item" href="{% url 'article:mypage' **user.username** %}">Profile</a>とした
145
+ slug_url_kwarg(url.pyでのキーワード名)
148
146
 
149
- →同様エラーとなってしまう
147
+ pk_url_kwarg(urls.pyで変数名)
150
148
 
151
149
 
152
150
 

1

urlタグの中身とurls.pyのルーティング部の変更

2020/12/01 09:28

投稿

Mr_PONPON_MARU
Mr_PONPON_MARU

スコア35

test CHANGED
File without changes
test CHANGED
@@ -132,6 +132,22 @@
132
132
 
133
133
 
134
134
 
135
+ ### 試してみたこと
136
+
137
+
138
+
139
+ - urlpatternsの中のpath()関数の引数をpath('mypage/<**slug:username**>/', views.MyPageView.as_view(), name='mypage')とした
140
+
141
+ →同様のエラーとなってしまう
142
+
143
+
144
+
145
+ -テンプレートのurlタグを
146
+
147
+ <a class="dropdown-item" href="{% url 'article:mypage' **user.username** %}">Profile</a>とした
148
+
149
+ →同様のエラーとなってしまう
150
+
135
151
 
136
152
 
137
153
  ### 補足情報(FW/ツールのバージョンなど)