很早之前学习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/
看到下面的界面
输入错误的账号密码会看到错误信息
输入正确的账号密码即可成功登陆
到这里我们用户认证的功能就做好了!