Django 2 登录注册
Django 2 Login Registration
我是 Django 的新手。经过几次 google 搜索后,我找到了完整的 CRUD,并且我知道如何处理它。但是在用户注册中,我在网上遇到了一些问题每个人都使用 Form.py 来处理注册表但我不想使用 Form.py 我喜欢自定义它。
但问题是当我使用 auth 登录时 Django auth 说这是一个错误的密码
我用
authenticate(email=email,password=password)
用于登录检查
有没有人请举例说明不使用 Form.py 的自定义登录注册 。
这是我的View.py代码
def loginCheck(request):
if request.method == 'POST':
username = request.POST.get('username'),
password = request.POST.get('password'),
user = authenticate(request, username=username, password=password)
if user is not None:
return HttpResponse('Find User')
else:
return HttpResponse("Not Find User")
和我的用户注册码
def registration(request):
checkData = AuthUser.objects.filter(email=request.POST.get('email'))
if not checkData:
User.objects.create_user(
username=request.POST.get('username'),
email=request.POST.get('email'),
password=(request.POST.get('password')),
)
messages.add_message(request, messages.INFO, 'User Saved Successfully')
return redirect('loginView')
else:
messages.add_message(request, messages.INFO, 'Email Already Exists')
return redirect('loginView')
我的登录码return找不到用户。
如果您想要自己的注册过程,您必须使用set_password保存密码的功能。
from django.contrib.auth.models import User
user = User.objects.get_or_create(username='john')
user.set_password('new password')
user.save()
试试这个最小的例子。在此,您可以创建用户并通过 API.
登录
import json
from django.views.generic import View
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.contrib.auth import authenticate, login
class UserRegisterView(View):
def get(self, request):
return JsonResponse({"message": "METHOD NOT ALLOWED"})
def post(self, request, *args, **kwargs):
json_body = json.loads(request.body)
username = json_body.get('username')
password = json_body.get('password')
email = json_body.get('email')
is_staff = json_body.get('is_staff', False)
is_superuser = json_body.get('is_superuser', False)
User.objects.create_user(
username=username, email=email,
password=password, is_staff=is_staff,
is_superuser=is_superuser
)
return JsonResponse({"message": "User created"})
class LoginView(View):
def get(self, request):
return JsonResponse({"message": "METHOD NOT ALLOWED"})
def post(self, request, *args, **kwargs):
'''
input data format:
{
"username" : "my username",
"password":"mysecret123@"
}
'''
json_body = json.loads(request.body)
username = json_body.get('username')
password = json_body.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return JsonResponse({"message": "login success"})
else:
return JsonResponse({"message": "login failed"})
为什么我解析 request.body
?
参考:
How to authenticate user in DJANGO(官方文档)
UPDAYE-1
根据请求更新视图,检查 POST 方法中的足够数据(粗体代码)
def loginCheck(request):
if request.method == 'POST'<b> and 'username' in request.POST and 'password' in request.POST:</b>
username = request.POST.get('username'),
password = request.POST.get('password'),
user = authenticate(request, username=username, password=password)
if user is not None:
return HttpResponse('Find User')
else:
return HttpResponse("Not Find User")
<b>return HttpResponse("POST data wrong")</b>
我是 Django 的新手。经过几次 google 搜索后,我找到了完整的 CRUD,并且我知道如何处理它。但是在用户注册中,我在网上遇到了一些问题每个人都使用 Form.py 来处理注册表但我不想使用 Form.py 我喜欢自定义它。
但问题是当我使用 auth 登录时 Django auth 说这是一个错误的密码
我用
authenticate(email=email,password=password)
用于登录检查
有没有人请举例说明不使用 Form.py 的自定义登录注册 。
这是我的View.py代码
def loginCheck(request):
if request.method == 'POST':
username = request.POST.get('username'),
password = request.POST.get('password'),
user = authenticate(request, username=username, password=password)
if user is not None:
return HttpResponse('Find User')
else:
return HttpResponse("Not Find User")
和我的用户注册码
def registration(request):
checkData = AuthUser.objects.filter(email=request.POST.get('email'))
if not checkData:
User.objects.create_user(
username=request.POST.get('username'),
email=request.POST.get('email'),
password=(request.POST.get('password')),
)
messages.add_message(request, messages.INFO, 'User Saved Successfully')
return redirect('loginView')
else:
messages.add_message(request, messages.INFO, 'Email Already Exists')
return redirect('loginView')
我的登录码return找不到用户。
如果您想要自己的注册过程,您必须使用set_password保存密码的功能。
from django.contrib.auth.models import User
user = User.objects.get_or_create(username='john')
user.set_password('new password')
user.save()
试试这个最小的例子。在此,您可以创建用户并通过 API.
登录import json
from django.views.generic import View
from django.contrib.auth.models import User
from django.http import JsonResponse
from django.contrib.auth import authenticate, login
class UserRegisterView(View):
def get(self, request):
return JsonResponse({"message": "METHOD NOT ALLOWED"})
def post(self, request, *args, **kwargs):
json_body = json.loads(request.body)
username = json_body.get('username')
password = json_body.get('password')
email = json_body.get('email')
is_staff = json_body.get('is_staff', False)
is_superuser = json_body.get('is_superuser', False)
User.objects.create_user(
username=username, email=email,
password=password, is_staff=is_staff,
is_superuser=is_superuser
)
return JsonResponse({"message": "User created"})
class LoginView(View):
def get(self, request):
return JsonResponse({"message": "METHOD NOT ALLOWED"})
def post(self, request, *args, **kwargs):
'''
input data format:
{
"username" : "my username",
"password":"mysecret123@"
}
'''
json_body = json.loads(request.body)
username = json_body.get('username')
password = json_body.get('password')
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return JsonResponse({"message": "login success"})
else:
return JsonResponse({"message": "login failed"})
为什么我解析 request.body
?
参考:
How to authenticate user in DJANGO(官方文档)
UPDAYE-1
根据请求更新视图,检查 POST 方法中的足够数据(粗体代码)
def loginCheck(request):
if request.method == 'POST'<b> and 'username' in request.POST and 'password' in request.POST:</b>
username = request.POST.get('username'),
password = request.POST.get('password'),
user = authenticate(request, username=username, password=password)
if user is not None:
return HttpResponse('Find User')
else:
return HttpResponse("Not Find User")
<b>return HttpResponse("POST data wrong")</b>