質問編集履歴
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を使用しています。
         | 
