广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python Web聊天室(二)--首页
  • 616
分享到

Python Web聊天室(二)--首页

首页聊天室Python 2023-01-31 06:01:43 616人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天来完成我们聊天室的首页首先创建appmanage.py startapp chat2.编辑视图文件(chat/views.py)# chat/views.py# 需要导入的包,有些包目前还没有用到,但是以后会用 from Django.

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

  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

<!DOCTYPE html>
<html lang="zh-CN">

  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>ChatRoom</title>
    // 调用bootstrap的css文件
    <link href="/static/bootstrap/css/bootstrap.css" rel="stylesheet">
    <link href="/static/css/non-responsive.css" rel="stylesheet">
    // 添加一个块,可以在之后的子文件中用,更多资料参考jinja2官方文档
   {% block css %}{% endblock %}
  </head>

  <body>
    // 导航栏
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">ChatRoom</a>
        </div>
        <div id="navbar">
        {% block nav-left %}{% endblock %}
          <ul class="nav navbar-nav navbar-right">
            // 一个下拉菜单,可以控制用户注销,更改密码,编辑资料等
           <li class="dropdown ">
              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">{{ user.username }} <span class="caret"></span></a>
              <ul class="dropdown-menu  dropdown-menu-left" role="menu">
                <li><a href="#">主页</a></li>
                <li><a href="#">设置</a></li>
                <li class="divider"></li>
                <li><a href="/account/logout">注销</a></li>
              </ul>
            </li>
            
          // 一个搜索框,目前还用不到,放着好看点吧:D
         <fORM class="navbar-form navbar-left" action="">
            <div class="form-group">
              <input type="text" class="form-control" placeholder="Search">
            </div>
            <button type="submit" class="btn btn-default">搜索</button>
            </form>
          </ul>
        </div><!--/.nav-collapse -->
      </div>
    </nav>

    <div class="container">

      {% block content %}{% endblock %}

    </div> <!-- /container -->
    
    // 引用Jquery
    <script src="/static/js/jquery-1.11.2.js"></script>
    <script src="/static/bootstrap/js/bootstrap.js"></script>
   {% block js %}{% endblock %}
  </body>
</html>

下面编辑我们聊天室的首页文件

# templates/chat/index.html

// 引用base.html文件
{% extends "layout/base.html" %}

// 导航栏
{% block nav-left %}
   <ul class="nav navbar-nav">
       // 'active'类表示活动页面,'disabled'表示禁用不可选的项目
      <li class="active"><a href="/chat/">首页</a></li>
      <li class="disabled"><a>聊天室</a></li>
   </ul>
{% endblock %}

// 内容
{% block content %}
   <div id="home">
      <div class="page-header">
      // 这个user就是我们前面在views里传到后台的字典,这里就可以调用了
      <h1>{{ user }},欢迎来到聊天室!</h1>
      <h3>全部房间</h3>
      </div>
      //  房间列表
      <table class="table table-striped">
         <thead>
            <tr>
               <th>房间序号</th>
               <th>房间名</th>
            </tr>
         </thead>
         <tbody>
            {% for item in RoomObj %}
               <tr>
                  <th>{{ item.id }}</th>
                  <th><a href="/chat/{{ item.id }}">{{ item }}</a></th>
               </tr>
            {% endfor %}
         </tbody>
      </table>
   </div>
{% endblock %}

5.查看效果

我们启动django,来看下完成后的效果

我们访问http://IP/chat/会跳转到登录页面,如果之前没登录的话

wKioL1UUy06wSYfaAABYxcTYrQE010.jpg

然后我们登录,用户密码就是之前在syncdb时,系统提示我们创建的用户

登陆成功后就会跳转到首页,聊天室的名字是之前在admin中创建的

wKiom1UUyuji1KIjAADmPU6Q1Jc992.jpg到这里我们的首页就搞定了,聊天室的页面我们下次再更新


源码地址: https://GitHub.com/cheney93/ChatRoom

--结束END--

本文标题: Python Web聊天室(二)--首页

本文链接: https://www.lsjlt.com/news/189663.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python Web聊天室(二)--首页
    今天来完成我们聊天室的首页首先创建appmanage.py startapp chat2.编辑视图文件(chat/views.py)# chat/views.py# 需要导入的包,有些包目前还没有用到,但是以后会用 from django....
    99+
    2023-01-31
    首页 聊天室 Python
  • Python实现web聊天室
    使用Python模块中的select模块实现web聊天室功能select模块Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持sel...
    99+
    2023-01-31
    聊天室 Python web
  • 基于flask的网页聊天室(二)
    前言 接上一次的内容继续完善,今天完成的内容不是很多,只是简单的用户注册登录,内容具体如下 具体内容 这次要加入与数据哭交互的操作,所以首先要建立相关表结构,这里使用flask-sqlalchemy来辅助创建 首先修改之前的init文件...
    99+
    2023-01-31
    聊天室 网页 flask
  • Python聊天室
    小编心语:锵锵锵!各位看官注意了啊,走过路过表错过!上篇博文主要介绍了基于基于Server-Sent Event的简单在线聊天室,相信不管各位是大牛、小牛还是跟小编一样的小白,可能觉得看得不够过瘾,区区一个小小即时聊天又怎能满足大家的需求。...
    99+
    2023-01-31
    聊天室 Python
  • Springboot+netty实现Web聊天室
    目录一、项目的创建二、代码编写三、运行效果一、项目的创建 新建Spring项目: 选择JDK版本: 选择Spring Web: 项目名称和位置的设置: 二、代码编写 导入.j...
    99+
    2022-11-12
  • python socket实现聊天室
    本文实例为大家分享了python socket实现聊天室的具体代码,供大家参考,具体内容如下 server端 import socket import json,struct from concurrent.fu...
    99+
    2022-06-02
    python socket 聊天室
  • python epoll聊天室程序
     仿照《how to use linux epoll with python》写的一个聊天室程序,比较简单。 python版本:2.7.3   #!/usr/bin/python  # -*- coding:utf-8 -*-  impo...
    99+
    2023-01-31
    聊天室 程序 python
  • 基于flask的网页聊天室(一)
    基本目标 基于flask实现的web聊天室,具有基本的登录注册,多人发送消息,接受消息 扩展目标 除基本目标外添加当前在线人数,消息回复,markdown支持,历史消息等 创建项目 首先创建基本的文件结构: auth和chat通过蓝图...
    99+
    2023-01-31
    聊天室 网页 flask
  • 基于flask的网页聊天室(三)
    前言 继续上一次的内容,今天完成了csrf防御的添加,用户头像的存储以及用户的登录状态 具体内容 首先是添加csrf的防御,为整个app添加防御: from flask_wtf.csrf import CSRFProtect CSR...
    99+
    2023-01-31
    聊天室 网页 flask
  • 基于flask的网页聊天室(四)
    前言 接前天的内容,今天完成了消息的处理 具体内容 上次使用了flask_login做用户登录,但是直接访问login_requare装饰的函数会报401错误,这里可以自定义login_requare拦截后的操作: @login_ma...
    99+
    2023-01-31
    聊天室 网页 flask
  • python简单的多人聊天室
    刚开始学习python,写了一个聊天室练练手。 Server.py import socket,select,thread; host=socket.gethostname() port=5963 addr=(host,port) ...
    99+
    2023-01-31
    聊天室 简单 python
  • Python怎么实现在线聊天室私聊
    本篇内容主要讲解“Python怎么实现在线聊天室私聊”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python怎么实现在线聊天室私聊”吧!实现思路对于私聊,我觉得应该有如下两点需要实现私聊列表更...
    99+
    2023-06-02
  • 如何使用Springboot+netty实现Web聊天室
    这篇文章主要为大家展示了“如何使用Springboot+netty实现Web聊天室”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Springboot+netty实现Web聊天室”这篇文章...
    99+
    2023-06-21
  • 小小聊天室Python代码实现
    相对于Java方式的聊天室,Python同样可以做得到。而且可以做的更加的优雅。想必少了那么多的各种流的Python Socket,你一定会喜欢的。 至于知识点相关的内容,这里就不多说了。 UDP方式 服...
    99+
    2022-06-04
    聊天室 代码 Python
  • Python聊天室实例程序分享
    上一篇 我们学习了简单的Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型。本文再通过一个例子来加强一下对 Socket 编程的理解。 ...
    99+
    2022-06-04
    实例 聊天室 程序
  • 方便简洁的在线WEB多人网页聊天室系统源码
    正文: 一款偏二次元的Web多人在线网页聊天工具源码,使用起来简洁、方便,在这里使用宝塔面板安装Web在线多人匿名聊天室教程分享给大家,有兴趣的可以玩玩。 安装步骤: 1.PHP安装通用扩展 fileinfo2.安装地址访问 域名/ins...
    99+
    2023-08-31
    php 开发语言
  • python实现简易聊天室(Linux终端)
    本文实例为大家分享了python实现简易聊天室的具体代码,供大家参考,具体内容如下 群聊聊天室 1.功能:类似qq群聊功能 有人进入聊天室需要输入姓名,姓名不能重复 有人进入聊天室,其他人会受到通知 xxx进入...
    99+
    2022-06-02
    python 聊天室
  • 如何用python实现简易聊天室
    本篇内容主要讲解“如何用python实现简易聊天室”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何用python实现简易聊天室”吧!1.功能:类似qq群聊功能有人进入聊天室需要输入姓名,姓名不...
    99+
    2023-06-20
  • Python+Socket实现多人聊天室,功能:好友聊天、群聊、图片、表情、文件等
    一、项目简介 本项目主要基于python实现的多人聊天室,主要的功能如下: 登录注册添加好友与好友进行私聊创建群聊邀请/申请加入群聊聊天发送图片聊天发送表情聊天发送文件聊天记录保存在本地中聊天过程中发送的文件保存本地 二、环境介绍 pyth...
    99+
    2023-08-17
    python flask mysql
  • 使用python构建一个自己的聊天室
    目录一、简介二、网络编程基础概念三、Socket编程简介及原理四、聊天室架构及功能需求五、实现聊天室服务器端1.使用socket创建服务器端socket对象。2.绑定IP地址和端口。...
    99+
    2023-05-14
    python构建 python聊天室
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作