很早之前学习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   #文件路径




   
      
      Login
      
   



   
      登录认证
      
         {% csrf_token %}
         
            
               Username: