Я просто играю с фазой входа и выхода из Django. У меня есть страница входа в систему, если пользователь получает ее с помощью команды «GET», он получает форму, если он отправляет форму, она передается в ту же функцию view.login
. Проблема в том, что когда я пытаюсь использовать ' if request.method=='POST'
. Я получаю сообщение об ошибке 'User has not attribute method'
, я не понимаю, почему объект 'User'
передается вместо объекта request
?
Вот код views.py:
from django.shortcuts import render
from django.http import HttpResponse, Http404, HttpResponseRedirect
from .models import Flight,Passenger
from django.urls import reverse
from django.contrib.auth import authenticate,login, logout
from django.contrib.auth.models import User
def index(request):
if not request.user.is_authenticated:
return render(request,"login.html")
context={
"flights":Flight.objects.all()
}
return render(request,"index.html",context)
def flight(request,flight_id):
flight= Flight.objects.get(pk=flight_id)
passengers = flight.passengers.all()
non_passengers = Passenger.objects.exclude(flight=flight).all()
context={
"flight":flight,
"passengers":passengers,
"non_passengers":non_passengers
}
return render(request,"flight.html",context)
def book(request,flight_id):
passenger_id = int(request.POST["passenger"])
flight = Flight.objects.get(pk=flight_id)
passenger = Passenger.objects.get(pk=passenger_id)
passenger.flight.add(flight)
return HttpResponseRedirect(reverse("flight",args=(flight_id,)))
def login(request):
print("\n In LOGIN \n")
if request.method=='POST':
print("\n In POST Request \n")
username = request.POST["name"]
password = request.POST["password"]
user = authenticate(request,username=username,password=password)
if user is not None:
login(user)
return HttpResponseRedirect(reverse("index"))
else:
return render(request,"login.html")
Вот страница входа:
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form action="{% url 'login' %}" method="POST">
{% csrf_token %}
Name<input type="text" name="name">
Password<input type="password" name="password">
<button type="submit"> Submit </button>
</form>
</body>
</html
Вот сообщение об ошибке (не полное сообщение):
AttributeError at /flights/login
'User' object has no attribute 'method'
Request Method: POST
Request URL: http://127.0.0.1:8000/flights/login
Django Version: 2.0
Exception Type: AttributeError
Exception Value:
'User' object has no attribute 'method'
Exception Location: E:\Web\web dev\Practice-code\mysite\flights\views.py in login, line 38
Python Executable: C:\Users\Mazhar Ali\AppData\Local\Programs\Python\Python36\python.exe
Python Version: 3.6.6
Python Path:
['E:\\Web\\web dev\\Practice-code\\mysite',
'C:\\Users\\Mazhar '
'Ali\\AppData\\Local\\Programs\\Python\\Python36\\python36.zip',
'C:\\Users\\Mazhar Ali\\AppData\\Local\\Programs\\Python\\Python36\\DLLs',
'C:\\Users\\Mazhar Ali\\AppData\\Local\\Programs\\Python\\Python36\\lib',
'C:\\Users\\Mazhar Ali\\AppData\\Local\\Programs\\Python\\Python36',
'C:\\Users\\Mazhar '
'Ali\\AppData\\Local\\Programs\\Python\\Python36\\lib\\site-packages']
Server time: Sat, 15 Sep 2018 08:15:26 +0000
Traceback Switch to copy-and-paste view
C:\Users\Mazhar Ali\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\exception.py in inner
response = get_response(request)
...
▶ Local vars
C:\Users\Mazhar Ali\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py in _get_response
response = self.process_exception_by_middleware(e, request)
...
▶ Local vars
C:\Users\Mazhar Ali\AppData\Local\Programs\Python\Python36\lib\site-packages\django\core\handlers\base.py in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
...
▶ Local vars
E:\Web\web dev\Practice-code\mysite\flights\views.py in login
login(user)
...
▶ Local vars
E:\Web\web dev\Practice-code\mysite\flights\views.py in login
if request.method=='POST':
...
▶ Local vars
Request information
USER
mazharali
GET
No GET data
POST
Variable Value
csrfmiddlewaretoken
'APmMk0KHsGbdk53l1bgRGCCSaub9OVauHT6ZQvUmK5SOBy9hHcJcEHcHVjPkUs3z'
name
'Mazhar'
password
'ali'
FILES
No FILES data
COOKIES
Variable Value
csrftoken
'zThgQxnzqEMymKDx703M2QihSTSW0r3YGX1tm2xeI3t9DdJtN1w70VS6DIw76YW3'
sessionid
'gyzu709und6s74mt5c6v1df499570rmp'