前言

  对于web开来说,用户登陆、注册、文件上传等是最基础的功能,针对不同的web框架,相关的文章非常多,但搜索之后发现大多都不具有完整性,对于想学习web开发的新手来说不具有很强的操作性;对于web应用来说,包括数据库的创建,前端页面的开发,以及中间逻辑层的处理三部分。

  本系列以可操作性为主,介绍如何通过django web框架来实现一些简单的功能。每一章都具有完整性和独立性。希望新手在动手做的过程中体会web开发的过程,过程中细节请参考相关文档。

本操作的环境:

===================

deepin linux 2013(基于ubuntu)

python 2.7

Django 1.6.2

===================

在上一节中介绍了django 如何实现用户注册,用户注册好了账号,就可以拿着注册的账号去登录了。这一节介绍如何实现用户登录。

创建项目与应用                                                                

#创建项目
fnngj@fnngj-H24X:~/djpy$ django-admin.py startproject mysite4
fnngj@fnngj-H24X:~/djpy$ cd mysite4
#在项目下创建一个login应用
fnngj@fnngj-H24X:~/djpy/mysite4$ python manage.py startapp login

项目目录结构如下:

打开mysite4/mysite4/settings.py文件,将应用添加进去:

# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'login',
)
……
#顺便注释csrf
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

设计model(数据库)                                

打开mysite4/login/models.py文件,添加如下内容

from django.db import models
from django.contrib import admin
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
 password = models.CharField(max_length=50) admin.site.register(User)

创建一个User表,有两个字段username、password

然后,进行数据库的同步:

fnngj@fnngj-H24X:~/djpy/mysite4$ python manage.py syncdb
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table login_user
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes 输入yes/no Username (leave blank to use 'fnngj'): 用户名(默认当前系统用户名)
Email address: fnngj@126.com 邮箱地址
Password: 密码
Password (again): 确认密码
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

配置URL

打开mysite4/mysite4/urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover() urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite5.views.home', name='home'),
# url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)),
)

启动服务

fnngj@fnngj-H24X:~/djpy/mysite4$ python manage.py runserver
Validating models... 0 errors found
May 21, 2014 - 14:31:32
Django version 1.6.2, using settings 'mysite4.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

访问admin

http://127.0.0.1:8000/admin/

登录用户名和密码为我们进行数据库同步时所设置的信息。

登录之后,选择add 添加用户。

创建用户,点击save

再次打开mysite4/login/models.py文件,添加如下内容

from django.db import models
from django.contrib import admin
# Create your models here.
class User(models.Model):
username = models.CharField(max_length=50)
   password = models.CharField(max_length=50) class UserAdmin(admin.ModelAdmin):
list_display = ('username','password') admin.site.register(User,UserAdmin)

再次刷新,admin后台,如下显示:

创建视图                                                                                

现在我们已经生成了一个用户信息表,下面要做的就是设计用户登录功能了。

打开mysite4/login/views.py 文件

#coding=utf-8
from django.shortcuts import render,render_to_response
from django.http import HttpResponseRedirect
from login.models import User
from django import forms #定义表单模型
class UserForm(forms.Form):
username = forms.CharField(label='用户名:',max_length=100)
password = forms.CharField(label='密码:',widget=forms.PasswordInput()) #登录
def login(request):
if request.method == 'POST':
uf = UserForm(request.POST)
if uf.is_valid():
#获取表单用户密码
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
#获取的表单数据与数据库进行比较
user = User.objects.filter(username__exact = username,password__exact = password)
if user:
return render_to_response('success.html',{'username':username})
else:
return HttpResponseRedirect('/login/')
else:
uf = UserForm()
return render_to_response('login.html',{'uf':uf})

  上面登录的核心是比较,拿到用户填写的表单数据(用户名、密码)与数据库User表中的字段进行比较,根据比较结果,如果成功跳转到success.html页面,如果失败还留在原来页面login.html 。

创建模板                                                                          

根据视图层的要求,我们需要创建两个页面,success.html 和login.html

先在mysite4/login/目录下创建templates目录,接着在mysite4/login/templates/目录下创建login.html 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>登录</title>
</head>
<style type="text/css">
body{color:#efd;background:#453;padding:0 5em;margin:0}
h1{padding:2em 1em;background:#675}
h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
p{margin:1em 0}
</style>
<body>
<h1>登录页面:</h1>
<form method = 'post' enctype="multipart/form-data">
{{uf.as_p}}
<input type="submit" value = "ok" />
</form>
</body>
</html>

在mysite4/login/templates/目录下创建success.html 文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
</head>
<body>
<h1>恭喜{{username}},登录成功!</h1>
</form>
</body>
</html>

设置模板路径

打开mysite4/mysite4/settings.py文件,在底部添加:

#template
TEMPLATE_DIRS=(
'/home/fnngj/djpy/mysite4/login/templates'
)

配置URL                                                                                                    

打开mysite4/mysite4/urls.py:

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover() urlpatterns = patterns('',
# Examples:
# url(r'^$', 'mysite5.views.home', name='home'),
url(r'^login/', include('login.urls')),
url(r'^admin/', include(admin.site.urls)),
)

创建文件mysite4/login/urls.py

from django.conf.urls import patterns, url
from login import views urlpatterns = patterns('',
url(r'^$', views.login, name='login'),
)

启动服务(python manage.py runserver),

访问登录页面(http://127.0.0.1:8000/login/

用户名、密码正确,点击OK ,跳转到登录成功页面:

django 快速实现登录的更多相关文章

  1. django 快速实现完整登录系统

    django 实现完整登录系统 本操作的环境: =================== Windows 7 64 python3.5 Django 1.10 =================== 创 ...

  2. Django快速入门

    Django 是用 Python 写的一个自由和开放源码 web 应用程序框架.web框架是一套组件,能帮助你更快.更容易地开发web站点.当你开始构建一个web站点时,你总需要一些相似的组件:处理用 ...

  3. Django快速搭建博客系统

    Django快速搭建博客系统 一.开发环境 Windows 7(64bit) python 3.6   https://www.python.org/ Django 2.0  https://www. ...

  4. Django:用户登录实例

    Django:用户登录实例 一.源代码 1,login.html代码(登录界面): <!DOCTYPE html> <html lang="zh-CN"> ...

  5. [置顶] django快速获取项目所有的URL

    django快速获取项目所有的URL django1.10快速获取项目所有的URL列表,可以用于权限控制 函数如下: import re def get_url(urllist , parent='' ...

  6. 使用Django快速搭建简单的数据管理后台

    使用Django快速搭建简单的数据管理后台 概述 需求描述: 数据表已建好,能可视化操作增删改查,避免直接操作数据库 简版的管理系统 环境 Windows 10 x64 Python 3.6.3 (A ...

  7. Django之auth登录认证

    前言:我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Django作为一个完美主义者的 ...

  8. Django之Django快速体验

    Django快速体验 前语: 这一节内容是直接快速上手,后面的内容是对内容进行按步解释,如果不想看解析的,可以直接只看这一节的内容. 1.新建项目应用新建项目test1新建应用booktest 2.注 ...

  9. Django流程-以登录功能为例

    Django流程-以登录功能为例 一.注意点 1.新创建的app一定要先去settings.py注册 简写:'app01' 完整:'app01.apps.App01Config' 2.启动Django ...

随机推荐

  1. 无线电源传输 Wireless Power Consortium (WPC) Communication

    Universally Compatible Wireless Power Using the Qi Protocol Wireless charging of portable electronic ...

  2. Android Studio导入github下载的工程

    现在从github上面现在的项目大部分都是Android Studio工程,那么问题来了,从github上面down一个工程下来,怎么导入android studio呢? 对刚从eclipse转And ...

  3. HTML5手机APP开发入门(2)

    HTML5手机APP开发入门(2) 课程内容 使用IonicFramework v2 + angular 2 完成一个简单的联系人列表的操作,有三个页面: ListPage,DetailPage,Ad ...

  4. http 请求类

    1.httpclient请求类 代理demo:http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/examples/org/apac ...

  5. mysql-5.7.15-winx64免安装版配置

    1.拷到硬盘根目录下; 2.在 bin 平行目录下新建  data 文件夹: 3. 修改  my-default.ini 文件,添加 basedir = C:\mysql-5.7.15-winx64d ...

  6. IDE、SATA、SCSI、SAS、FC、SSD硬盘类型介绍[zz]

    目前所能见到的硬盘接口类型主要有IDE.SATA.SCSI.SAS.FC等等. IDE是俗称的并口,SATA是俗称的串口,这两种硬盘是个人电脑和低端服务器常见的硬盘.SCSI是"小型计算机系 ...

  7. http协议读书笔记2-连接管理

    一.http是如何使用tcp连接的? http连接本质就是tcp连接和一些使用连接的规则.所有的http通讯都是由tcp/ip来承载的.tcp/ip是全球计算机及网络设备都在使用的一种常用的分组交换的 ...

  8. OpenSSL命令---pkcs7

    用途: 用于处理DER或者PEM格式的pkcs#7文件. 用法: openssl pkcs7 [-inform PEM|DER] [-outform PEM|DER] [-in filename] [ ...

  9. Centos单网卡配置多个IP的方法

    网上好多介绍一个网卡多个IP的方法,都有些问题,下面是实践可行的方法 DEVICE="eth0" TYPE="Ethernet" BOOTPROTO=none ...

  10. 连接的世界 - LTE时代产业趋势和战略分析

    连接的世界 - LTE时代产业趋势和战略分析 作者:华为有线技术公司李常伟 2014-09-22 信息产业发展解放的核心是这个世界连接的方式.由语音到数据.由通信到情感.由人的连接到物的连接.由“哑” ...