python利用django实现简单的登录和注册,并利用session实现了链接数据库
利用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>
python利用django实现简单的登录和注册,并利用session实现了链接数据库的更多相关文章
- python入门:模拟简单用户登录(自写)
#!/usr/bin/env python # -*- coding: utf-8 -*- #模拟简单用户登录(自写) import getpass a = raw_input("Pleas ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- 051.Python的Django框架简单使用
一 HTTP相关概念 http协议包含由浏览器发送数据到服务器需要遵循的请求协议与服务器发送数据到浏览器需要遵循的响应协议.用于HTTP协议交互的信息被为HTTP报文.请求端(客户端)的HTTP报文 ...
- Django实战(一)-----用户登录与注册系统7(邮件确认)
通常而言,我们在用户注册成功,实际登陆之前,会发送一封电子邮件到对方的注册邮箱中,表示欢迎.进一步的还可能要求用户点击邮件中的链接,进行注册确认. 下面就让我们先看看如何在Django中发送邮件吧. ...
- Django实战(一)-----用户登录与注册系统6(session会话、注册视图)
因为因特网HTTP协议的特性,每一次来自于用户浏览器的请求(request)都是无状态的.独立的. 通俗地说,就是无法保存用户状态,后台服务器根本就不知道当前请求和以前及以后请求是否来自同一用户.对于 ...
- Django实战(一)-----用户登录与注册系统5(图片验证码)
为了防止机器人频繁登录网站或者破坏分子恶意登录,很多用户登录和注册系统都提供了图形验证码功能. 验证码(CAPTCHA)是一种区分用户是计算机还是人的公共全自动程序. 可以防止恶意破解密码.刷票.论坛 ...
- Django实战(一)-----用户登录与注册系统2(数据模型、admin后台、路由视图)
使用Django开发Web应用的过程中,很多人都是急急忙忙地写视图,写前端页面,把最根本的模型设计给忽略了. 模型中定义了数据如何在数据库内保存,再直白点说就是数据表的定义.这部分工作体现在Djang ...
- Django学习——静态文件配置、request对象方法、pycharm如何链接数据库、Django如何指定数据库、Django orm操作
静态文件配置 # 1.静态文件 网站所使用的已经提前写好的文件 css文件 js文件 img文件 第三方文件 我们在存储静态文件资源的时候一般默认都是放在static文件夹下 # 2.Django静态 ...
- Django入门-简单的登录
1.登录页面 2.项目目录结构 3.需要修改四个文件 urls.py-------路径与函数之间的对应关系 views.py-------函数定义与逻辑处理 加入一个login.html文件 ...
随机推荐
- TOP命令详解(负载情况)
简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器. top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按 ...
- Class.getResource和ClassLoader.getResource的区别分析
原文:http://swiftlet.net/archives/868 在Java中获取资源的时候,经常用到Class.getResource和ClassLoader.getResource,本文给大 ...
- Spring Boot-------JPA——EntityManager构建通用DAO
EntityManager EntityManager 是用来对实体Bean 进行操作的辅助类.他可以用来产生/删除持久化的实体Bean,通过主键查找实体bean,也可以通过EJB3 QL 语言查找满 ...
- wxPython中菜单、按钮学习
---恢复内容开始--- wx.Window 是一个基类,许多构件从它继承.包括 wx.Frame 构件.技术上这意味着,我们可以在所有的 子类中使用 wx.Window 的方法.我们这里介绍它的几种 ...
- C#中的原子操作Interlocked,你真的了解吗?
阅读目录 背景 代码描述 越分析越黑暗 结语 一.背景 这个标题起的有点标题党的嫌疑[捂脸],这个事情的原委是这样的,有个Web API的站点在本地使用Release模式Run的时候出现问题,但是使用 ...
- java web jsp原理图 ,静态包含,动态包含,out与response.getWrite()
jsp原理图 ,静态包含,动态包含,out与response.getWrite()
- Jquery Ajax和getJSON获取后台普通Json数据和层级Json数据解析
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- python抓取zabbix图形,并发送邮件
最近十九大非常烦,作为政府网站维护人员,简直是夜不能寐.各种局子看着你,内保局,公安部,360,天融信,华胜天成,中央工委,政治委员会... 360人员很傻X,作为安全公司,竟然不能抓到XX网站流量, ...
- Anroid四大组件service之本地服务
服务是Android四大组件之一,与Activity一样,代表可执行程序.但Service不像Activity有可操作的用户界面,它是一直在后台运行.用通俗易懂点的话来说: 如果某个应用要在运行时向用 ...
- SPARK 创建新任务
1.应用程序创建 SparkContext 的实例 sc 2.利用 SparkContext 的实例来创建生成 RDD 3.经过一连串的 transformation 操作,原始的 RDD 转换成为其 ...