首页 > 其他分享 >BBS系统

BBS系统

时间:2023-03-19 20:00:57浏览次数:41  
标签:name ForeignKey models BBS 系统 length True verbose

前期准备

配置

在setting.py中配置
"""数据库配置"""
	DATABASES = {
		'default': {
			'ENGINE': 'django.db.backends.mysql',
			'NAME': 'bbs',		#数据库名称
			'USER': 'root',		#用户名
			'PASSWORD': '******',	#密码
			'HOST': '127.0.0.1',
			'PORT': 3306,
			'CHARSET': 'utf8'

		}
	}

"""静态文件配置"""
	STATICFILES_DIRS = [
		os.path.join(BASE_DIR, 'static')  #static是创建的文件夹
	]

"""编写数据库用到继承AbstractUser类的如下代码时"""
	from django.contrib.auth.models import AbstractUser
	class Users(AbstractUser):
		# 编写AbstractUser类中没有的字段 不能冲突!!!
		phone = models.BigIntegerField()
		addr = models.CharField(max_length=32)
#需配置:
	UTH_USER_MODEL = 'app01.Users'
在__init__.py中配置(个人喜欢在setting.py同级文件中)
	import pymysql
	pymysql.install_as_MySQLdb()

数据库代码

from django.db import models
from django.contrib.auth.models import AbstractUser

# Create your models here.

class UserInfo(AbstractUser):
    """用户表"""
    phone = models.BigIntegerField(verbose_name="手机号", null=True)
    avatar = models.FileField(verbose_name="头像", upload_to="avatar/", default="avatar/default.jpg")
    """给该字段传文件对象会保存到upload_to指定的位置 然后该字段存储该位置的路径"""
    create_time = models.DateTimeField(verbose_name="注册时间", auto_now_add=True)

    blog = models.OneToOneField(to='Blog', null=True)

class Blog(models.Model):
    """个人站点表"""
    site_name = models.CharField(verbose_name="站点名称", max_length=32)
    site_title = models.CharField(verbose_name="站点标题", max_length=32)
    site_style = models.CharField(verbose_name="站点样式", max_length=32)

class Article(models.Model):
    """文章表"""
    title = models.CharField(verbose_name="文章标题", max_length=32)
    desc = models.CharField(verbose_name="文章简介", max_length=255)
    content = models.TextField(verbose_name="文章内容")
    create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)
    # 优化字段
    up_num = models.IntegerField(verbose_name="点赞数", default=0)
    down_num = models.IntegerField(verbose_name="点踩数", default=0)
    comment_num = models.IntegerField(verbose_name="评论数", default=0)
    # 外键字段
    blog = models.ForeignKey(to="Blog", null=True)
    category = models.ForeignKey(to="Category", null=True)
    tags = models.ManyToManyField(to="Tag", through="Article2Tag", through_fields=('article', 'tag'))

class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article')
    tag = models.ForeignKey(to="Tag")

class Category(models.Model):
    """文章分类表"""
    name = models.CharField(verbose_name="分类名称", max_length=32)
    blog = models.ForeignKey(to="Blog", null=True)

class Tag(models.Model):
    """文章标签表"""
    name = models.CharField(verbose_name="标签名称", max_length=32)
    blog = models.ForeignKey(to="Blog", null=True)

class UpAndDown(models.Model):
    """点赞点踩表"""
    user = models.ForeignKey(to="UserInfo", null=True)
    article = models.ForeignKey(to="Article", null=True)
    is_up = models.BooleanField(verbose_name="点赞点踩")


class Comment(models.Model):
    """评论表"""
    user = models.ForeignKey(to="UserInfo")
    article = models.ForeignKey(to="Article")
    content = models.CharField(verbose_name="评论内容", max_length=255)
    comment_time = models.DateTimeField(verbose_name="评论时间", auto_now_add=True)
    # 自关联
    parent = models.ForeignKey(to="self", null=True)  # 有些评论就是根评论

进行数据库迁移命令
makemigrations
migrate

标签:name,ForeignKey,models,BBS,系统,length,True,verbose
From: https://www.cnblogs.com/gjjcode/p/17234047.html

相关文章

  • Mysql数据库系统部署使用
    拓补图:数据库的概念:数据库就是一个运行在系统上的软件,用于存储用户个人信息、用户的游戏资料等数据库是多个表的集合,是存储数据的仓库,以一定的组织方式存储的相互有关的数据......
  • Windows系统常见问题(不断更新)
    1、恢复快捷方式的小箭头及“快捷方式”字样。导入如下注册表内容:WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\lnkfile]"IsShortcut"=""[HKEY_CURRENT_USE......
  • 网络系统管理Linux环境——10.AppSrv之DNS
    题目要求服务器AppSrv上的工作任务3. DNS(BIND)为chinaskills.cn域提供域名解析。为www.chinaskills.cn、download.chinaskills.cn和mail.chinaskills.cn提供解析。启用内外......
  • 网络系统管理Linux环境——11.AppSrv之APACHE2
    题目要求服务器AppSrv上的工作任务4. APACHE2安装apache服务;服务以用户webuser系统用户运行;全站点启用TLS访问,使用本机上的“CSKGlobalRootCA”颁发机构颁发,网站证书信......
  • 网络系统管理Linux环境——12.AppSrv之MAIL(POSTFIX-SMTPS & DOVECOT-IMAPS)
    题目要求服务器AppSrv上的工作任务5. MAIL(POSTFIX-SMTPS&DOVECOT-IMAPS)Postfix​​​sdskill.com​​​​​的邮件发送服务器支持smtps(465)协议连接,使用Rserver颁发......
  • 网络系统管理Linux环境——15.StorageSrv之NFS
    题目要求服务器AppSrv上的工作任务2. NFS共享/webdata/目录;用于存储AppSrv主机的WEB数据;仅允许AppSrv主机访问该共享。项目实施关闭selinux跟防火墙:[root@storagesrv~]#......
  • 网络系统管理Linux环境——16.StorageSrv之VSFTPD
    题目要求服务器AppSrv上的工作任务3. VSFTPD禁止使用不安全的FTP,请使用“CSKGlobalRootCA”证书颁发机构,颁发的证书,启用FTPS服务;用户webadmin,登录ftp服务器,根目录为/we......
  • 网络系统管理Linux环境——17.StorageSrv之SAMBA
    题目要求服务器AppSrv上的工作任务4. SAMBA创建zhangsan和lisi用户用于测试文件共享;创建samba共享,本地目录为/data/share1,要求:共享名为share1。仅允许zhangsan用户能上传......
  • 网络系统管理Linux环境——13.AppSrv之CA
    题目要求服务器AppSrv上的工作任务6. CA(证书颁发机构)CA根证书路径/csk-rootca/csk-ca.pem;签发数字证书,颁发者信息:(仅包含如下信息)   C=CN   ST=China   ......
  • 网络系统管理Linux环境——14.StorageSrv之DISK
    题目要求服务器AppSrv上的工作任务1. DISK添加大小均为10G的虚拟磁盘,配置raid-5磁盘。创建LVM命名为/dev/vg01/lv01,大小为100G,格式化为ext4,挂在到本地目录/webdata,在分区......