很早之前学习django的时候写的一个小项目,最近时间比较充裕拿出来整理一下.
Python版本: 2.7.8
Django版本: 1.7.2
1.创建一个项目
django-admin startproject ChatRoom
2.在配置文件(settings.py)中添加模板与静态文件目录
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
) # 设置模板目录
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
) # 设置静态文件目录
3.创建一个app
E:\py\ChatRoom>django-admin startapp account
这个app主要用于账号管理(登录,退出,个人资料)
4.修改视图(account/views.py)文件
# coding: utf-8
from django.shortcuts import render_to_response,HttpResponseRedirect,HttpResponse
from django.contrib import auth
from django.contrib.auth.decorators import login_required
from django.template.context import RequestContext
def login(request):
# 用于保存登录状态
data = {'loginStatus': ''}
# 判断请求方法
if request.method == 'POST':
# 获取用户名和密码
username = request.POST.get('username')
password = request.POST.get('password')
# 认证用户,如果账号密码匹配则返回用户名,否则返回None
user = auth.authenticate(username=username, password=password)
if user is not None:
# 登录用户
auth.login(request, user)
return HttpResponse('登录成功!')
# 如果账号密码不匹配返回的信息
data['loginStatus'] = u'用户名或密码错误!'
return render_to_response('account/login.html', data, content_instance=RequestContext(request))
render_to_response里的第一个参数是模板文件,第二个参数是传给模板的字典,可以在模板里调用,第三个参数是避免跨站请求伪造,更详细的介绍请参考django官方文档
5.修改urls文件
首先修改主urls文件(ChatRoom/urls.py)
from django.conf.urls import patterns, include, url
from django.contrib import admin
urlpatterns = patterns(
'',
url(r'^admin/', include(admin.site.urls)),
# 当url以"account/"开头,交给"account.urls"处理
url(r'^account/', include('account.urls')),
)
在account目录下创建urls.py文件并编辑
from django.conf.urls import patterns, url
from account import views
urlpatterns = patterns(
'',
# url为"account/login/"时,交给views.login函数处理
url(r'^login/$', views.login),
)
6.编写模板文件
这里用到bootstrap,下载bootstrap之后放到static/boostrap目录
templates/account/login.html #文件路径
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Login</title>
<link rel="stylesheet" type="text/css" href="/static/bootstrap/css/bootstrap.css">
</head>
<body class="container">
<div class="container-fluid" style="margin-top: 30px">
<div class="well" style="width: 320px; margin-left: auto; margin-right: auto">
<h3 style="margin: 0 0 20px;font-family: 微软雅黑;">登录认证</h3>
<form action="/account/login/" method="POST">
{% csrf_token %}
<div id="div_id_username" class="clearfix">
<div class="form-group">
<label for="id_username">Username:</label>
<input type="text" name="username" maxlength="16" autocapitalize="off" autocorrect="off" class="form-control" id="id_username" required="">
</div>
</div>
<div id="div_id_password" class="clearfix">
<div class="form-group">
<label for="id_password">Password:</label>
<input type="password" name="password" maxlength="16" autocapitalize="off" autocorrect="off" class="form-control" id="id_password" required="">
</div>
</div>
<p style="color: red;">{{ loginStatus }}</p>
<input type="submit" name="submit" value="Log in" class="btn btn-primary form-control" id="submit-id-submit">
</form>
</div><!--/.well-->
</div><!-- /.container-fluid -->
</body>
</html>
7.同步数据库
manage.py syncdb
根据提示创建账户
8.启动服务并测试
manage.py runserver 8000
访问http://127.0.0.1:8000/account/login/
看到下面的界面
输入错误的账号密码会看到错误信息
输入正确的账号密码即可成功登陆
到这里我们用户认证的功能就做好了!
转载于:https://blog.51cto.com/cheney1228/1623913