質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

解決済

djangoでユーザー情報を取得する multivaluedictkeyerror at /loginsで阻まれる

penpenpen
penpenpen

総合スコア11

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1回答

0評価

0クリップ

402閲覧

投稿2022/01/03 16:52

やりたいこと
新規登録>ログイン>個人ページ と行き
個人ページであなたは 「アクセスしてるユーザーネーム」 です と表示させたい

状況
MultiValueDictKeyError at /Loginsというエラーに阻まれる
ホーム ログイン 新規登録 個人ページの四つがあり 個人ページの作成中にエラーが発生

ログインページを経由の場合 (登録済みだがログインはしてないアカウントを使用)
Logins>info>    結果 multivaluedictkeyerror at /logins

直接アクセスの場合(http://127.0.0.1:8000/info)
info>        結果 あなたはroot(スーパーユーザー)です
スーパーユーザーがログアウト状態の時は あなたはNoneです、となります

一応直接いけば表示はされるのですが一般ユーザーが使うログイン画面からはアクセスできません
なぜこのようなことになるのでしょうか?

ログインページ

def Logins(request): massege="" if (request.method=="POST"): username = request.POST['username'] raw_password = request.POST['password1'] user = authenticate(username=username, password=raw_password) if user: if user.is_active: # ログイン #login(request,user) return short.redirect(to="/info") else: return HttpResponse("アカウントが有効ではありません") else: massege="ログインIDまたはパスワードが間違っています" return short.render(request, 'logins/login.html',{"massege":massege})

エラーが出ているページ #user = request.userでも同様の挙動

def info(request): #user = request.user aa=request.user.username massege="新しいキャラを追加してください" if (request.method == 'POST'): form = touhou_Add(request.POST) if form.is_valid(): form.save() massege="追加されたはず..." else: massege="ちゃんと書け!!!!" val = touhou.objects.all() val_2 = touhou.objects.values() header = ['ID','名前',"能力","性別","居住","年齢"] my_dict2 = { 'form':touhou_Add(), "massege":massege, 'title':'テスト', 'header': header, "val":val, "val2":val_2, "tokutei":aa } return short.render(request, 'info.html', my_dict2)

エラーが出ているページHTML側 関係ない部分は省きました
info.html

<p>あなたは {{tokutei}} です</p><br>

エラー

MultiValueDictKeyError at /Logins 'username' Request Method: POST Request URL: http://127.0.0.1:8000/Logins Django Version: 3.2.10 Exception Type: MultiValueDictKeyError Exception Value: 'username' Exception Location: C:\Users\PC_User\Anaconda3\envs\pyflan\lib\site-packages\django\utils\datastructures.py, line 78, in __getitem__ Python Executable: C:\Users\PC_User\Anaconda3\envs\pyflan\python.exe Python Version: 3.7.7 Python Path: ['C:\Users\PC_User\Desktop\test\python_flan', 'C:\Users\PC_User\Anaconda3\envs\pyflan\python37.zip', 'C:\Users\PC_User\Anaconda3\envs\pyflan\DLLs', 'C:\Users\PC_User\Anaconda3\envs\pyflan\lib', 'C:\Users\PC_User\Anaconda3\envs\pyflan', 'C:\Users\PC_User\AppData\Roaming\Python\Python37\site-packages', 'C:\Users\PC_User\Anaconda3\envs\pyflan\lib\site-packages', 'c:\users\pc_user\desktop\ml-agents-0.15.0\ml-agents-envs', 'c:\users\pc_user\desktop\ml-agents-0.15.0\ml-agents', 'C:\Users\PC_User\Anaconda3\envs\pyflan\lib\site-packages\win32', 'C:\Users\PC_User\Anaconda3\envs\pyflan\lib\site-packages\win32\lib', 'C:\Users\PC_User\Anaconda3\envs\pyflan\lib\site-packages\Pythonwin'] Server time: Tue, 04 Jan 2022 01:09:37 +0900

参考
https://wonderwall.hatenablog.com/entry/2018/03/25/180000 古いですがこれしかみつかりませんでした
https://kuma-server.com/django-request/#toc2

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。