エンジニアへの道のり[其の3]

[環境]

Editor : Visual Studio Code(Ubuntu)

Python version : 3.8.5

Django version : 3.2.3

OS : Windows10


<HEADER>

おはようございます。

今日はdjangoで1日苦戦したエラーが解決できたので記録していきたいと思います。


<BODY>

出たエラーは[MultiValueDictKeyError]です。

それで調べてみた結果

[views.py]

from django.shortcuts import render
from django.contrib.auth.models import User

def signupfunc(request):
   if request.method == "POST":
       username = request.POST["username"] ←この部分
       password = request.POST["password"]
       user = User.objects.create_user(username,'', password)
   return render(request,'signup.html',{'some' : 100})

この部分をいう箇所を

[views.py]

from django.shortcuts import render
from django.contrib.auth.models import User

def signupfunc(request):
   if request.method == "POST":
       username = request.POST.get("username") ←こうして
       password = request.POST["password"]
       user = User.objects.create_user(username,'', password)
   return render(request,'signup.html',{'some' : 100})

こういう感じにすれば治りました。

が、自分の場合また違うエラーが出てきてしまい、

[valueerror]というものが発生しました。

この原因はおそらく、[templates]の[signup.html]で

[signup.html]

{% extends 'base.html' %}

{% block content %}
<body class="text-center">
 <form class="form-signin" method="POST">{% csrf_token %}
   <h1 class="h3 mb-3 fw-normal">サインインする</h1>
   <label for="inputEmail" class="visually-hidden">ユーザー</label>
   <input type="text" id="inputEmail" class="form-control" placeholder="ユーザー" name='username' required autofocus>
   <label for="inputPassword" class="visually-hidden">パスワード</label>
   <input type="password" id="inputPassword" class="form-control" placeholder="パスワード" name='password' required>
   <button class="w-100 btn btn-lg btn-primary" type="submit">サインイン</button>
   <p class="mt-5 mb-3 text-muted">&copy; 2017-2021</p>
 </form>     
</body>
{% endblock content %}

[name='username']のところを[name='uesrname']と最初に機材していたことが原因だと思います。

それで、

[views.py]

from django.shortcuts import render
from django.contrib.auth.models import User

def signupfunc(request):
   if request.method == "POST":
       username = request.POST.get("username") ←ここ
       password = request.POST["password"]
       user = User.objects.create_user(username,'', password)
   return render(request,'signup.html',{'some' : 100})

”ここ”というところを[uesrname]に変えた結果無事エラーがなくなりました。

まだ、思うところはありますが、一応解決したということで、次に行きたいと思います。


<FOOTER>

本日は、エラーを解決できたという記録でした。

エラー解決できたものはいいもののごタイピングが多いのが原因なので、何とかしていきたいです。

・[MultiValueDictKeyError]が出た際は、get()を使う。

・ごタイピングがあるかどうか徹底的に確認する。

・どうしてもわからない場合はいったん休憩する。

以上です。

この記事が気に入ったらサポートをしてみませんか?