当前位置:   article > 正文

毕业设计分享 - 基于Django的问答社区管理系统_python毕业设计基于django的社区问答网站与设计

python毕业设计基于django的社区问答网站与设计

0 前言

Hi,大家好,今天给大家介绍一个python管理系统,大家可以用于自己的课设或毕设!

今天要分享的是:毕业设计 基于Django的问答社区管理系统

项目分享:

https://gitee.com/sinonfin/system-sharing

1 设计说明

在虚拟环境中运行命令“python manage.py run”启动项目。启动成功后,在浏览器中输入网址“127.0.0.1:9000”即可进入BBS问答社区首页。如图1所示。

在这里插入图片描述
在首页可以根据状态和标签过滤帖子列表,按状态查看如图2所示,按标签查看如图3所示。

在这里插入图片描述

在这里插入图片描述

选中一个帖子,单击可以查看帖子详情,如图4所示。

在这里插入图片描述

只有在用户登录后,才能发帖和回帖。所以需要用户先来注册,然后再登录。注册和登录在一个页面,单击“注册”按钮实现注册功能,单击“登录”按钮实现登录功能,如图5所示。

在这里插入图片描述

用户发帖页面如图6所示,回帖页面如图7所示。

在这里插入图片描述
在这里插入图片描述

答案采纳页面如图8所示,显示回复数量页面如图9所示。

在这里插入图片描述

部分相关源码

# -*- coding: utf-8 -*-

import base64
import uuid
import hashlib
from urllib import parse
from io import BytesIO

from tornado import gen

from handlers.base_handlers import BaseHandler
from database.sql_utils.auth import get_user_by_username, create_user

from utils.auth_code import get_pic_code
from utils.logger import logger
from utils.errcode import LOGIN_VCODE_ERR, PASSWORD_ERR, USERNAME_ERR, USER_EXISTS, USER_CREATE_ERR


class LoginHandler(BaseHandler):
    """登录控制器"""
    @gen.coroutine
    def get(self, *args, **kwargs):  # 渲染页面
        self.render('login.html')

    @gen.coroutine
    def post(self, *args, **kwargs):  # 登录数据提交
        sign = self.get_argument('sign', '')            # 接收验证码标识参数
        vcode = self.get_argument('vcode', '')          # 接收验证码参数
        username = self.get_argument('username', '')    # 接收用户名参数
        password = self.get_argument('password', '')    # 接收密码参数
        # 检测验证码是否正确
        if self.get_secure_cookie(sign).decode('utf-8') != vcode:  # 如果验证码错误
            self.json_response(*LOGIN_VCODE_ERR)                   # 返回json格式的错误提示
            raise gen.Return()

        data = yield get_user_by_username(username)   # 根据用户名获取数据
        if not data:                                  # 如果用户名不存在
            self.json_response(*USERNAME_ERR)          # 提示错误信息
            raise gen.Return()
        # 检测密码是否正确
        if data.get('password') != hashlib.sha1(password.encode('utf-8')).hexdigest():  # 如果密码错误
            self.json_response(*PASSWORD_ERR)                                           # 返回json格式错误信息
            raise gen.Return()

        self.set_secure_cookie('auth-user', data.get('username', ''))           # 设置Cookie
        self.set_cookie('username', data.get('username', ''), expires_days=30)  # 设置过期时间为30天
        self.json_response(200, 'OK', {})


class LogoutHandler(BaseHandler):
    """
    登出控制器
    """
    @gen.coroutine
    def get(self, *args, **kwargs):
        next = self.get_argument('next', '') # 获取next参数
        self.clear_cookie('auth-user')       # 删除auth_user的Cookie值
        self.clear_cookie('username')       #  删除username的Cookie值
        next = next + '?' + parse.urlencode({'m': '注销成功', 'e': 'success'}) # 拼接URL参数
        self.redirect(next) # 跳转到注销页面


class SignupHandler(BaseHandler):
    """
    注册控制器
    """
    @gen.coroutine
    def get(self, *args, **kwargs):  # 渲染页面
        self.render('login.html')

    @gen.coroutine
    def post(self, *args, **kwargs):                 # 提交注册数据
        username = self.get_argument('username', '') # 接收用户名参数
        password = self.get_argument('password', '') # 接收密码参数
        vcode = self.get_argument('vcode', '') # 接收验证码参数
        sign = self.get_argument('sign', '')   # 接收验证码标识参数
        # 检测验证码是否正确
        if self.get_secure_cookie(sign).decode('utf-8') != vcode:
            self.json_response(*LOGIN_VCODE_ERR)
            raise gen.Return()

        data = yield get_user_by_username(username) # 根据用户名获取用户信息
        if data: # 如果用户已经存在
            self.json_response(*USER_EXISTS) # 提示错误信息
            raise gen.Return()

        password = hashlib.sha1(password.encode('utf-8')).hexdigest()  # 加密密码
        result = yield create_user(username, password) # 将用户名和密码写入数据库
        if not result: # 如果结果不存在,提示错误信息
            self.json_response(*USER_CREATE_ERR)
            raise gen.Return()

        self.set_secure_cookie('auth-user', username)          # 生成登录cookie
        self.set_cookie('username', username, expires_days=30) # 设置过期时间
        self.json_response(200, 'OK', {})


class AuthCodeHandler(BaseHandler):
    """
    验证码控制器
    """
    @gen.coroutine
    def get(self, *args, **kwargs): # 获取验证码
        b = BytesIO()
        img, check = yield get_pic_code()
        img.save(b, format='png')
        vcode = base64.b64encode(b.getvalue())
        sign = str(uuid.uuid1())
        self.set_secure_cookie(sign, ''.join([str(i) for i in check]).lower(), expires_days=1/48)
        self.json_response(200, 'OK', {
            'vcode': vcode.decode('utf-8'),
            'sign': sign
        })

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114

项目分享

项目分享:完整源码 + 环境配置文档 + 设计使用手册

https://gitee.com/sinonfin/system-sharing

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/378877
推荐阅读
相关标签
  

闽ICP备14008679号