利用Django开发BBS论坛(一)

在做任何项目之前,首先需要对此项目做一个分析和功能构造,所以对数据库的创建则为重中之重,因为一些功能都是由数据库进行构建和开发的,所以对数据库的构造是很重要的,那么,关于要开发一个BBS论坛,那么其数据库也好好好地规划一下!

下面则是关于BBS数据库的相关代码!

from django.db import models
from django.contrib.auth.models import User
from django.core.exceptions import ValidationError
import datetime
# Create your models here.

class Article(models.Model): # 文章
    title = models.CharField(max_length=255) # 标题
    brief = models.CharField(null=True,blank=True,max_length=255) # 摘要
    category = models.ForeignKey("Category", on_delete=models.CASCADE)  # 板块
    content = models.TextField(u"文章内容") # 文章内容
    author = models.ForeignKey("UserProfile", on_delete=models.CASCADE)  # 作者
    pub_date = models.DateTimeField(blank=None) # auto_now_add = True 默认不能更改的
    last_modify = models.DateTimeField(auto_now=True)
    priority = models.IntegerField(u"优先级",default=1000) # 优先级
    head_img = models.ImageField(u‘文章标题图片‘,upload_to=‘img‘)
    status_choices = (("draft",u"草稿"),
              ("published",u"已发布"),
              ("hidden","隐藏"))
    status = models.CharField(choices=status_choices,default="published",max_length=255)
    def __dir__(self):
        return self.title

    def clean(self):
        if self.status == "draft" and self.pub_date is not None:
            raise ValidationError((‘Drafe entries may not have a publication data‘))
        if self.status == "published" and self.pub_date is not None:
            self.pub_date = datetime.date.today()

class Comment(models.Model): # 评论 或 点赞
    article = models.ForeignKey(Article,verbose_name=u"所属文章", on_delete=models.CASCADE)
    parent_comment = models.ForeignKey(‘self‘,related_name=‘my_children‘, on_delete=models.CASCADE) # 父评论有多少子评论
    comment_choices = ((1,u"评论"),
                       (2,u"点赞"))
    comment_type = models.IntegerField(choices=comment_choices,default=1)
    user = models.ForeignKey("UserProfile", on_delete=models.CASCADE)
    comment = models.TextField(blank=True,null=True) #
    date = models.DateTimeField(auto_now_add=True)

    def clean(self):
        if self.comment_type == 1 and len(self.comment) == 0:
            raise ValidationError(u"评论不能为空")

    def __dir__(self):
        return "%s,P:%s,%s"%(self.article.id,self.parent_comment,self.comment)

class Category(models.Model): # 板块
    name = models.CharField(max_length=255,unique=True)
    brief = models.CharField(null=True,blank=True,max_length=255) # @@
    set_as_top_menu = models.BooleanField(default=False) # 设置动态的菜单
    position_index = models.SmallIntegerField() # 板块的序号
    admins = models.ManyToManyField("UserProfile",blank=True) # 版主

    def __dir__(self):
        return self.name
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=32)
    signature = models.CharField(null=True, blank=True, max_length=255) # 个人签名
    head_img = models.ImageField(height_field=150,width_field=150,null=True, blank=True)

    def __dir__(self):
        return self.name

为了使其看的更方便,这里我使用了Navicat for MySQL这款软件,来看看存储数据的数据库构造,如下图。

原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/9419556.html

时间: 2024-10-07 18:09:16

利用Django开发BBS论坛(一)的相关文章

python 学习笔记十九 django项目bbs论坛

跨站请求伪造保护 CSRF 中间件和模板标签提供对跨站请求伪造简单易用的防护.某些恶意网站上包含链接.表单按钮或者JavaScript ,它们会利用登录过的用户在浏览器中的认证信息试图在你的网站上完成某些操作,这就是跨站攻击.还有另外一种相关的攻击叫做“登录CSRF”,攻击站点触发用户浏览器用其它人的认证信息登录到其它站点. 全局: 中间件 django.middleware.csrf.CsrfViewMiddleware 局部: @csrf_protect,为当前函数强制设置防跨站请求伪造功能

Django开发BBS---51网络课程笔记(1)

51上有一个用Django开发BBS论坛的免费视频,就开发过程写个简要的笔记.课程地址:http://edu.51cto.com/course/course_id-2787.html 论坛的开发以"抽屉"http://dig.chouti.com/ 为原型.开发一个类似的BBS网站. 抽屉网站的主界面结构: 由此,在创建项目之前,确定数据的表结构: 首先,应当有一个发帖的表, 其次, 是哪个用户发的,应当创建一个用户表 再有,应当有一个评论表.评论表中有一个id与帖子表相连 还应当建立

django开发自动化测试平台简介

Django的优点 1:功能完善.要素齐全:自带大量常用工具和框架(比如分页,auth,权限管理), 适合快速开发企业级网站. 2:完善的文档:经过十多年的发展和完善,Django有广泛的实践案例和完善的在线文档.开发者遇到问题时可以搜索在线文档寻求解决方案. 3:强大的数据库访问组件:Django的Model层自带数据库ORM组件,使得开发者无须学习SQL语言即可对数据库进行操作. 4:Django先进的App设计理念: App是可插拔的,是不可多得的思想.不需要了,可以直接删除,对系统整体影

Python开发一个简单的BBS论坛

项目:开发一个简单的BBS论坛 需求: 整体参考“抽屉新热榜” + “虎嗅网” 实现不同论坛版块 帖子列表展示 帖子评论数.点赞数展示 在线用户展示 允许登录用户发贴.评论.点赞 允许上传文件 帖子可被置顶 可进行多级评论 就先这些吧... 知识必备: Django HTML\CSS\JS BootStrap Jquery 设计表结构 1 # -*- coding:utf-8 -*- 2 from django.db import models 3 from django.contrib.aut

Django小项目简单BBS论坛

开发一个简单的BBS论坛 项目需求: 1 整体参考"抽屉新热榜" + "虎嗅网" 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发

Python之路【第十八篇】Django小项目简单BBS论坛部分内容知识点

开发一个简单的BBS论坛 项目需求: 1 整体参考“抽屉新热榜” + “虎嗅网” 2 实现不同论坛版块 3 帖子列表展示 4 帖子评论数.点赞数展示 5 在线用户展示 6 允许登录用户发贴.评论.点赞 7 允许上传文件 8 帖子可被置顶 9 可进行多级评论 知识必备:(注:没有必备下面知识的同学,请返回去看会之后再看下面的内容防止蒙了~~!) 1 Django 2 HTML\CSS\JS 3 BootStrap 4 Jquery 设计表结构 1.表结构重要性 在开发任何项目的时候,设计到数据库,

[Python] 利用Django进行Web开发系列(一)

1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的.Web开发的途径有好多种,比如传统的.Net,还有很火爆的Java.Python作为一种灵活好学的脚本语言,已经越来越受程序员的欢迎和热捧,甚至成为程序员的必备技能.Django是Python的Web开放框架,好多人说学习Python就是在学Django,从这也可以看出Django的强大.博主也是

django开发中利用 缓存文件 进行页面缓存

首先我们先来了解下浏览器的缓存 浏览器缓存机制 Cache-control策略 Cache-Control与Expires的作用一致,都是指明当前资源的有效期,控制浏览器是否直接从浏览器缓存取数据还是重新发请求到服务器取数据.只不过Cache-Control的选择更多,设置更细致,如果同时设置的话,其优先级高于Expires. 还是上面那个请求,web服务器返回的Cache-Control头的值为max-age=300,即5分钟(和上面的Expires时间一致,这个不是必须的). Last-Mo

[Python] 利用Django进行Web开发

第一步:下载并安装django 首先,在Django官网上下载适合自己Python的Django版本,在安装Django前首先确定你已成功安装了python.         Windows系统下安装Django: 解压缩下载的Django压缩包,找到里面的setup.py文件,然后打开cmd命令窗口,在其对应的路径下执行如下命令: python setup.py install Linux系统下安装Django: 以此在shell中输入如下命令: $ tar xzvf Django-*.tar