質問編集履歴
2
エラー内容の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,21 +1,23 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
Djangoで「https://<ホスト名>/mypage/<ユーザ名>」のようなアクセスでログイン中のマイページに行けるようにコードを書いていますが、下記のように
|
3
|
+
Djangoで「https://<ホスト名>/mypage/<ユーザ名>」のようなアクセスでログイン中のマイページに行けるようにコードを書いていますが、下記のようにValueErrorが発生してしまいます。
|
4
4
|
|
5
|
-
|
5
|
+
DetailViewを継承したMyPageViewでルーティングに関するクラス変数をオーバーライドしても、デフォルトでルーティングに使われるpkが変数として利用されているままになってしまいます。
|
6
|
-
それともデータベースに問題があるのでしょうか...?
|
7
6
|
|
7
|
+
他のQ&Aや公式を参考にしても、硫黄量を得られず、エラーが改善されずにどうしたら良いものかと..
|
8
|
+
|
9
|
+
|
8
10
|
### 発生している問題・エラーメッセージ
|
9
11
|
|
10
12
|
```
|
11
|
-
|
13
|
+
ValueError at /mypage/ユーザ名/
|
12
|
-
'
|
14
|
+
Field 'id' expected a number but got 'ユーザ名'.
|
13
15
|
Request Method: GET
|
14
16
|
Request URL: http://localhost:8000/mypage/ユーザ名/
|
15
17
|
Django Version: 3.0.3
|
16
|
-
Exception Type:
|
18
|
+
Exception Type: ValueError
|
17
19
|
Exception Value:
|
18
|
-
'
|
20
|
+
Field 'id' expected a number but got 'ユーザ名'.
|
19
21
|
```
|
20
22
|
|
21
23
|
### 該当のソースコード
|
@@ -36,13 +38,11 @@
|
|
36
38
|
```
|
37
39
|
from django.shortcuts import render
|
38
40
|
from django.views import generic
|
39
|
-
from django.urls import reverse_lazy
|
40
|
-
from
|
41
|
+
from accounts.models import CustomUser
|
41
|
-
import logging
|
42
42
|
|
43
43
|
class MyPageView(generic.DetailView):
|
44
44
|
template_name = 'mypage.html'
|
45
|
-
model =
|
45
|
+
model = CustomUser
|
46
46
|
slug_field = 'username' #モデルのフィールド名
|
47
47
|
slug_url_kwarg = 'mypage' #urls.pyでのキーワード名
|
48
48
|
pk_url_kwarg = 'username' #ルーティングでの変数名の変更
|
@@ -62,17 +62,16 @@
|
|
62
62
|
```
|
63
63
|
mypage.htmlへのリンク先
|
64
64
|
```
|
65
|
-
<a class="dropdown-item" href="{% url 'article:mypage' user.
|
65
|
+
<a class="dropdown-item" href="{% url 'article:mypage' user.username %}">Profile</a>
|
66
66
|
```
|
67
67
|
|
68
|
-
###
|
68
|
+
### 調べてみたこと
|
69
69
|
|
70
|
-
|
70
|
+
url.pyでのデフォルトのルーティングはpkとなっており、下記のDetailViewのクラス変数をオーバーライドするとルーティングにpk以外を使用できるようになる。
|
71
|
-
→同様のエラーとなってしまう
|
72
71
|
|
72
|
+
slug_field(モデルのフィールド名)
|
73
|
+
slug_url_kwarg(url.pyでのキーワード名)
|
73
|
-
|
74
|
+
pk_url_kwarg(urls.pyでの変数名)
|
74
|
-
<a class="dropdown-item" href="{% url 'article:mypage' **user.username** %}">Profile</a>とした
|
75
|
-
→同様のエラーとなってしまう
|
76
75
|
|
77
76
|
### 補足情報(FW/ツールのバージョンなど)
|
78
77
|
|
1
urlタグの中身とurls.pyのルーティング部の変更
title
CHANGED
File without changes
|
body
CHANGED
@@ -65,7 +65,15 @@
|
|
65
65
|
<a class="dropdown-item" href="{% url 'article:mypage' user.get_username %}">Profile</a>
|
66
66
|
```
|
67
67
|
|
68
|
+
### 試してみたこと
|
68
69
|
|
70
|
+
- urlpatternsの中のpath()関数の引数をpath('mypage/<**slug:username**>/', views.MyPageView.as_view(), name='mypage')とした
|
71
|
+
→同様のエラーとなってしまう
|
72
|
+
|
73
|
+
-テンプレートのurlタグを
|
74
|
+
<a class="dropdown-item" href="{% url 'article:mypage' **user.username** %}">Profile</a>とした
|
75
|
+
→同様のエラーとなってしまう
|
76
|
+
|
69
77
|
### 補足情報(FW/ツールのバージョンなど)
|
70
78
|
|
71
79
|
- 認証機能にはdjango-allauthを使用しています。
|