今天来完成我们聊天室的首页

  1. 首先创建app

manage.py startapp chat

2.编辑视图文件(chat/views.py)

# chat/views.py

# 需要导入的包,有些包目前还没有用到,但是以后会用
from django.shortcuts import render_to_response, HttpResponse
from chat.models import ChatRoom, RoomAccount, ChatPool
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
import json

# 添加一个用户认证的装饰器,功能是检测访问页面的用户是否已经登录
# 如果没有登录则跳转到登录界面
@login_required(login_url='/account/login')
def index(request):
   user = request.user
   RoomObj = ChatRoom.objects.all()
   # 第二个参数是传给template的字典,我们之后可以再template里调用这些数据
   return render_to_response("chat/index.html", {'user': user, 'RoomObj': RoomObj})

我们还需要改一下之前用户认证里的views文件

# account/views.py

def login(request):
   data = {'loginStatus': ''}
   if request.method == 'POST':
      username = request.POST.get('username')
      password = request.POST.get('password')
      user = auth.authenticate(username=username, password=password)
      if user is not None:
         auth.login(request, user)
         # 改动了这里,意思是登录成功后跳转到/chat
         return HttpResponseRedirect('/chat')
      data['loginStatus'] = u'用户名或密码错误!'
   return render_to_response('account/login.html', data, context_instance=RequestContext(request))

2.在app里创建urls文件

# ChatRoom/urls.py

urlpatterns = patterns(
   '',
   url(r'^admin/', include(admin.site.urls)),
   url(r'^account/', include('account.urls')),
   # 新添加的内容
   url(r'^chat/', include('chat.urls')),
)

# chat/urls.py

urlpatterns = patterns(
   '',
   # 意思是uri是'/chat'时交给views.index函数处理
   url(r'^$', views.index),
)

3.编辑models文件

# chat/models.py

# 这个表用来保存房间名
class ChatRoom(models.Model):
   # 参数表示最长8字节,并且不可重复
   roomname = models.CharField(max_length=8, unique=True)

   # 在admin中显示的名字
   def __unicode__(self):
      return self.roomname

修改配置文件setting.py

# 添加后我们在syncdb时才会同步chat中的models
INSTALLED_APPS = (
   ...
   'chat',
)

同步数据库

manage.py makemigrations
manage.py syncdb

在admin中注册

# chat/admin.py

from django.contrib import admin
from chat.models import ChatRoom, RoomAccount, ChatPool
# Register your models here.
admin.site.register(ChatRoom)

启动应用,然后访问http://IP/admin

在admin中添加两个聊天室

4.编辑template文件

首先在templates下创建两个创建两个目录,layout和chat

在layout里创建base.html(基础模板,我们可以在其他的模板里调用这个,可以减少代码重复率)

这个模板我们是根据bootstrap官网给出的模板来修改的http://v3.bootcss.com/examples/non-responsive/ 更多资料可以参考官方文档

# templates/layout/base.html




  
    
    
    ChatRoom
    // 调用bootstrap的css文件
    
    
    // 添加一个块,可以在之后的子文件中用,更多资料参考jinja2官方文档
   {% block css %}{% endblock %}
  

  
    // 导航栏
    
      
        
          ChatRoom
        
                 {% block nav-left %}{% endblock %}                        // 一个下拉菜单,可以控制用户注销,更改密码,编辑资料等                           {{ user.username }}                                 
  • 主页
  •                 
  • 设置
  •                                  
  • 注销
  •                                                    // 一个搜索框,目前还用不到,放着好看点吧:D