python利用django实现简单的登录和注册,并利用session实现了链接数据库

时间:2022-06-25 06:28:26

利用session实现与数据库链接,登录模块(在views.py)

def login(request):
# return HttpResponseRedirect('/') # 判断是否post方式,如果是则进行下面的表单处理
if request.method == 'POST':
rs = Users.objects.filter(email=request.POST.get('email'), #django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。 比如我数据库里有一条记录,记录的name的值是Python的话,我用student = Student.objects.filter(name='老王python') 它返回的student是一个对象的列表,可以看的出来student[0]和上面的get方式返回的student的结果是一样的。
pwd=request.POST.get('pwd')).first()
request.session['nicheng'] = rs.nicheng
request.session['pwd'] = rs.pwd
# return HttpResponseRedirect('/')
if (rs == None):
return HttpResponse('<script>alert("请注册后在登陆");location.href="/";</script>')
else:
return render(request, 'home.html') # nicheng_val = request.POST.get('nicheng')
# email_val = request.POST.get('email')
# pass_val = request.POST.get('pass')
#
# if (nicheng_val != "" and pass_val != ''and email_val != ''):
#
# user = authenticate(name=nicheng_val, email=email_val, password=pass_val) # 用户验证
#
# if (user != None):
#
# # return HttpResponseRedirect('loginfailed.html')
# # return HttpResponseRedirect('/app1/loginfailed/')
# return HttpResponse('<script>alert("登陆成功");location.href="/";</script>') #
# request.session['nicheng'] = nicheng
# request.session['pwd'] = login.pwd
# return HttpResponseRedirect('/')
#
#
def home(request):
...
if 'nichenng' in request.session:
nicheng = request.session['nicheng']
pwd = request.session['pwd']
return render('home.html', {'nicheng': nicheng, 'pwd': pwd})
else:
return render('home.html')

  注册模块(views.py下)

def register(request):

    if request.method == 'POST':

        email = request.POST.get('email')
pwd = request.POST.get('pwd')
nicheng = request.POST.get('nicheng') try: Users.objects.create(email=email, pwd=pwd, nicheng=nicheng) # 创建一个对象实例 成功注册
return redirect('/') except Exception as err: errStr = err.args[1] if 'emailuniq' in errStr:
return HttpResponse('<script>alert("用户名重复");location.href="/";</script>')
elif 'nichenguniq' in errStr:
return HttpResponse('<script>alert("昵称重复");location.href="/";</script>')
# return render(request,'zhucesuccess.html') else:
# return render(request, 'zhucefailed.html')
return redirect('/')

  register.html下

<form method="post" action="/novelnet1/register">

    <input type="text" name="email" class="form-control" placeholder="请输入昵称"><br />
<input type="password" name="pwd" class="form-control" placeholder="请输入邮箱"><br />
<input type="text" name="nicheng" class="form-control" placeholder="请输入密码"><br /> <input type="submit" value="注册" class="btn btn-primary"/>
{% csrf_token %}
</form>

  login.html下同理

<form method="post" action="/novelnet1/login1">

    <input type="text" name="email" class="form-control" placeholder="请输入昵称"><br />
<input type="password" name="pwd" class="form-control" placeholder="请输入邮箱"><br />
<input type="text" name="nicheng" class="form-control" placeholder="请输入密码"><br /> <input type="submit" value="登录" class="btn btn-primary"/>
{% csrf_token %}
</form>

  urls下

# from django.conf.urls import url
# from django.contrib.auth import views as auth_views
# from django.views.generic.base import TemplateView
# from novelnet1 import views as core_views
# from . import views
#
# # app_name = 'app1'
#
# urlpatterns = [
#
# # start login
# url(r'^$', TemplateView.as_view(template_name='home.html'), name='home'),
#
# url(r'^login/$', auth_views.login, {'template_name': 'login.html'}, name='login'),
# url(r'^logout/$', auth_views.logout, {'template_name': 'logged_out.html'}, name='logout'),
# # end login
#
# # start register
# url(r'^register/$', core_views.register, name='register'),
# # end register
#
# url(r'^testform/$', views.testform, name='testform'),
#
# ]
#
from django.conf.urls import url
from django.conf.urls import include
from . import views urlpatterns = [ url(r'^$', views.index, name='index'), #首页
url(r'^register', views.register, name='register'),
url(r'^login1',views.login,name='login'), # url(r'^testform/$', views.testform, name='testform'), ]

  home.html下的登录注册

 <div class="tmp">
<button data-toggle="modal" data-target="#myModal1">登录</button>
<button data-toggle="modal" data-target="#myModal">注册</button>
</div>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">注册</h4>
</div>
<div class="modal-body">
{% include "users/register.html" %}
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div> <div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel">登录</h4>
</div>
<div class="modal-body">
{% include "users/login.html" %}
</div>
</div>
</div>
</div>