python - Django:用户登录系统与用户注册不在同一页面中工作
问题描述
我是 Django 新手,试图在同一个 HTML 页面中创建用户注册和登录系统。
我的用户注册部分正在工作,但登录部分没有。
所以,我的 views.py 在下面,
from django.contrib import messages
from django.shortcuts import render, redirect
from django.contrib.auth.models import User, auth
def index(request):
if request.method == "POST":
if request.POST.get('submit') == 'Kayıt Ol':
username= request.POST['username']
email= request.POST['email']
password= request.POST['password']
if User.objects.filter(username=username).exists():
messages.info(request,'Bu kullanıcı adı kullanılıyor')
return redirect('/')
elif User.objects.filter(email=email).exists():
messages.info(request,'Bu email kullanılıyor.')
return redirect('/')
else:
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return redirect('/')
else:
return render(request, 'blog/SignPage.html')
elif request.POST.get('submit') == 'Oturum Aç':
username= request.POST.get('username')
password= request.POST.get('password')
user= auth.authenticate(username=username,password=password)
if user is not None:
auth.signin(request,user)
redirect('/anasayfa')
else :
messages.info(request,'Yanlış kullanıcı adı veya şifre')
return redirect('/')
else:
return render(request, 'blog/SignPage.html')
我的 urls.py 也是,
urlpatterns = [
path('', views.index, name='kaydol'),
]
编辑:我添加我的进口。
解决方案
我相信这是一个缩进错误。在这里,检查下面的代码,看看它是否有效。
你应该auth.signin
改为auth.login
.
def index(request):
if request.method == "POST":
if request.POST.get('submit') == 'Kayıt Ol':
username= request.POST['username']
email= request.POST['email']
password= request.POST['password']
if User.objects.filter(username=username).exists():
messages.info(request,'Bu kullanıcı adı kullanılıyor')
return redirect('/')
elif User.objects.filter(email=email).exists():
messages.info(request,'Bu email kullanılıyor.')
return redirect('/')
else:
user = User.objects.create_user(username=username, email=email, password=password)
user.save()
return redirect('/')
elif request.POST.get('submit') == 'Oturum Aç':
username= request.POST.get('username')
password= request.POST.get('password')
user= auth.authenticate(username=username,password=password)
if user is not None:
auth.login(request,user)
return redirect('/anasayfa')
else :
messages.info(request,'Yanlış kullanıcı adı veya şifre')
return redirect('/')
else:
return render(request, 'blog/SignPage.html')
推荐阅读
- ruby-on-rails - 无需 root 安装 Ruby + Jekyll
- spring - 如何在 Spring 中使用 thymeleaf 在外部化消息之间切换?
- python - 如何将 Flask 应用程序变成 Perl 插件?
- reactjs - KendoReact Grid 标签无法显示数据
- html - 向左对齐时,iframe 溢出 div 容器
- c - 未定义对“WinMain@16”collect2.exe 的引用的错误消息:错误:ld 返回 1 退出状态
- networkx - 如何在无线传感器网络中使用遗传算法
- ruby-on-rails - 仅为 Ruby on Rails 中的站点管理员发布
- responsive-design - 寻找有关如何将自定义类添加到 Squarespace 中的部分和模块的指导?
- data-modeling - 来自多个源表的星型模式