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>

  

时间: 2024-08-11 00:22:32

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

python编程:函数式编程实现登录和注册

不知道大家有没有一种感觉,我明明学会了,为什么一写代码就不知道从何下笔了. 初学函数编程的小伙伴通常需要检测一下自己的学习成果,我们现在就写一道通过函数来实现登录和注册的小程序 def login(username,password): ''' 用于用户登录 :param username:用户输入的用户名 :param password:用户输入的密码 :return:True表示登录成功,False表示登录失败 ''' fp=open('DB','r') for line in fp: us

django + vue 简单配置登录注册及分页和实例化

django基本跨域知识点 setting设置 ALLOWED_HOSTS = ['*']??INSTALLED_APPS = [   'django.contrib.admin',   'django.contrib.auth',   'django.contrib.contenttypes',   'django.contrib.sessions',   'django.contrib.messages',   'django.contrib.staticfiles',   'app',  

Python学习_1_实现简单的登录判断

"""作业:让用户输入用户名和密码:校验三次,三次未成功,将最后一个用户进行锁定.""" def login1(): """自己实现登录验证的方法: 根据已学的东西想的方法.缺点是:用户名密码只能存储一个. """ user_info_file = open('user_info.txt', 'r') # 用户名和密码存储文件 user_info_list = user_info_fil

Django实战(一)-----用户登录与注册系统4(表单)

我们前面都是手工在HTML文件中编写表单form元素,然后在views.py的视图函数中接收表单中的用户数据,再编写验证代码进行验证,最后使用ORM进行数据库的增删改查.这样费时费力,整个过程比较复杂,而且有可能写得不太恰当,数据验证也比较麻烦. 设想一下,如果我们的表单拥有几十上百个数据字段,有不同的数据特点,如果也使用手工的方式,其效率和正确性都将无法得到保障. 有鉴于此,Django在内部集成了一个表单功能,以面向对象的方式,直接使用Python代码生成HTML表单代码,专门帮助我们快速处

利用PHP实现登录与注册功能以及使用PHP读取mysql数据库——以表格形式显示数据

登录界面 <body><form action="login1.php" method="post"><div>用户名:<input type="text" name="uid" /></div><br /><div>密码:<input type="password" name="pwd" />

Python(Django) 连接MySQL(Mac环境)

看django的文档,详细的一塌糊涂,这对文档来时倒是好事,可是数据库连接你别一带而过啊.感觉什么都想说又啥都没说明白,最有用的一句就是推荐mysqlclient.展开一个Django项目首先就是成功连接数据库然后安装顶层应用.那链接数据库就分两点: 首先你的python环境可以连接到你的mysql环境. 把数据库参数写到Django配置文件中. 第二点文档写的很明白了照做即可,关键是小弟没用python连过mysql啊.当年用php的时候哪有这么多事,一键搭建环境舒服的不行,部署也就是FTP传

Python爬虫之路——简单网页抓图升级版(增加多线程支持)

转载自我的博客:http://www.mylonly.com/archives/1418.html 经过两个晚上的奋斗,将上一篇文章介绍的爬虫稍微改进了下(Python爬虫之路--简单网页抓图),主要是将获取图片链接任务和下载图片任务用线程分开来处理了,而且这次的爬虫不仅仅可以爬第一页的图片链接的,整个http://desk.zol.com.cn/meinv/下面的图片都会被爬到,而且提供了多种分辨率图片的文件下载,具体设置方法代码注释里面有介绍. 这次的代码仍然有点不足,Ctrl-C无法终止程

Python爬虫之路——简单网页抓图升级版(添加多线程支持)

转载自我的博客:http://www.mylonly.com/archives/1418.html 经过两个晚上的奋斗.将上一篇文章介绍的爬虫略微改进了下(Python爬虫之路--简单网页抓图),主要是将获取图片链接任务和下载图片任务用线程分开来处理了,并且这次的爬虫不只能够爬第一页的图片链接的,整个http://desk.zol.com.cn/meinv/以下的图片都会被爬到,并且提供了多种分辨率图片的文件下载,详细设置方法代码凝视里面有介绍. 这次的代码仍然有点不足,Ctrl-C无法终止程序

[Python] 利用Django进行Web开发系列(一)

1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的.Web开发的途径有好多种,比如传统的.Net,还有很火爆的Java.Python作为一种灵活好学的脚本语言,已经越来越受程序员的欢迎和热捧,甚至成为程序员的必备技能.Django是Python的Web开放框架,好多人说学习Python就是在学Django,从这也可以看出Django的强大.博主也是