前提
現在、Docker上でDjango, Nginx, Gunicornを用いて会員サイトを製作中です、
会員登録後、ログインをする際にログインIDとパスワードを入力します。
送信ボタンをクリックした後、400 Bad Requestと出ました。
前提としてmakemigrations, migrateコマンドを利用し、Djangoとデータベースの連携が取れたことを確認しております。
実現したいこと
- ログインを成功させること
発生している問題・エラーメッセージ
ecap5-nginx-1 | 192.168.192.1 - - [16/Oct/2022:18:57:57 +0000] "POST /login/%7Burl%20'Login'%20%%7D HTTP/1.1" 400 157 "-" "-" "-"
該当のソースコード
settings.py
1ALLOWED_HOSTS = os.environ.get("DJANGO_ALLOWED_HOSTS").split(" ")
env.prod
1DJANGO_ALLOWED_HOSTS=localhost 127.0.0.1 [::1] ecap
url.py
1from django.contrib import admin 2from django.urls import path 3from django.conf import settings 4from django.conf.urls.static import static 5 6from home.views import home 7from login.views import Login 8from signup.views import AccountRegistration 9from login.views import Logout 10from myaccount.views import myaccount 11 12urlpatterns = [ 13 path('', home, name='home'), 14 path('login/', Login, name='Login'), 15 path('logout/', Logout, name='Logout'), 16 path('signup/', AccountRegistration.as_view(), name='signup'), 17 path('myaccount/', myaccount, name='myaccount'), 18 path('admin/', admin.site.urls), 19]
login/views.py
1from django.shortcuts import render 2from django.views.generic import TemplateView 3from signup.forms import AccountForm, AddAccountForm 4from django.core.files.storage import FileSystemStorage 5 6from django.contrib.auth import authenticate, login, logout 7from myaccount.views import myaccount 8from django.http import HttpResponse, HttpResponseRedirect 9from django.urls import reverse 10from django.contrib.auth.decorators import login_required 11 12 13def Login(request): 14 # POST 15 if request.method == 'POST': 16 # To get userID & password 17 ID = request.POST.get('userid') 18 Pass = request.POST.get('password') 19 20 # The fanction to validate in Django 21 user = authenticate(username=ID, password=Pass) 22 23 # To validate users 24 if user: 25 # To check whether the user is activated or not 26 if user.is_activate: 27 # login 28 login(request, user) 29 # To go to homepage 30 return HttpResponseRedirect(reverse('myaccount')) 31 else: 32 # Not users 33 return HttpResponse("Your account is not validated.") 34 # Fail to validate users 35 else: 36 return HttpResponse("Your loginID or password is wrong.") 37 # To get 38 else: 39 return render(request, 'login.html') 40 41 42# Logout 43@login_required 44def Logout(request): 45 logout(request) 46 # To go to the login screen 47 return HttpResponseRedirect(reverse('Login'))
login/templates/login.html
1<form method="post" action="{url 'Login' %}"> 2 {% csrf_token %} 3 4 <table class="reg_form"> 5 <tr> 6 <td><label for="userid">UserID: </label> </td> 7 <td><input type="text" name="userid"></td> 8 <td><label for="password">Password: </label></td> 9 <td><input type="password" name="password"></td> 10 </tr> 11 </table> 12 13 <input type="submit" class="btn" value="Login"> 14 </form>
試したこと
- ALLOWED_HOSTS = ["*"]
- nginx.conf のproxy_pass にある"_"を取り除く(ecap_django => ecap)
- env.prod の DJANGO_ALLOWED_HOSTS にmystreamのサーバーネーム, ecapを追加
補足情報(FW/ツールのバージョンなど)
Docker: 3.8
Database: postgres:13.0-alpine
Nginx: 1.26.1
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。