欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python3进阶开发-第一个仿博客园的项目(1)

发布时间:2023/12/20 python 46 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python3进阶开发-第一个仿博客园的项目(1) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

首先我们要设计一下表结构:

UserInfo(用户信息表) --------》一对一    -----------》Blog(博客信息表)

UserInfo(用户信息表) ---------》一对多    -----------》Article UpDown(点赞表)

UserInfo(用户信息表) ---------》一对多    -----------》Article Comment(评论表)

UserInfo(用户信息表)----------》一对多    -----------》Article(文章)

Blog(博客信息表)    ----------------》 一对多   -----------》Category(个人博客文章分类表) 

Blog(博客信息表)    ----------------》一对多   ------------》Tag(标签表)

Category(个人博客文章分类表)--》 一对多 -------------》Article(文章表)

Tag(标签表)  --------------------------》多对多  -------------》Article(文章表)

Article(文章表) ------------------------》一对一  -------------》ArticleDetail(文章详情表)

Article(文章表) ------------------------》一对多  --------------》Article UpDown(点赞表)

Article(文章表) ------------------------》一对多 ---------------》Article Comment(评论表)

 

from django.db import models# Create your models here. from django.contrib.auth.models import AbstractUserclass UserInfo(AbstractUser): #继承了Django框架自带的一张用户表,我们可以自定义原表没有的属性进行拓展"""用户信息表"""nid = models.AutoField(primary_key=True)phone = models.CharField(max_length=11, null=True, unique=True)avatar = models.FileField(upload_to="avatars/", default="avatars/default.png")blog = models.OneToOneField(to="Blog", to_field="nid", null=True)def __str__(self):return self.usernameclass Meta:verbose_name = "用户信息"verbose_name_plural = verbose_nameclass Blog(models.Model):"""博客信息"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=64) # 个人博客标题theme = models.CharField(max_length=32) # 博客主题def __str__(self):return self.titleclass Meta:verbose_name = "博客"verbose_name_plural = verbose_nameclass Category(models.Model):"""个人博客文章分类"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=32) # 分类标题blog = models.ForeignKey(to="Blog", to_field="nid") # 外键关联博客,一个博客站点可以有多个分类def __str__(self):return "{}-{}".format(self.blog.title, self.title)class Meta:verbose_name = "文章分类"verbose_name_plural = verbose_nameclass Tag(models.Model):"""标签"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=32) # 标签名blog = models.ForeignKey(to="Blog", to_field="nid") # 所属博客def __str__(self):return self.titleclass Meta:verbose_name = "标签"verbose_name_plural = verbose_nameclass Article(models.Model):"""文章"""nid = models.AutoField(primary_key=True)title = models.CharField(max_length=50) # 文章标题desc = models.CharField(max_length=255) # 文章描述create_time = models.DateTimeField(auto_now_add=True) # 创建时间category = models.ForeignKey(to="Category", to_field="nid", null=True)user = models.ForeignKey(to="UserInfo", to_field="nid")tags = models.ManyToManyField(to="Tag",through="Article2Tag",through_fields=("article", "tag"),)def __str__(self):return self.titleclass Meta:verbose_name = "文章"verbose_name_plural = verbose_nameclass ArticleDetail(models.Model):"""文章详情表"""nid = models.AutoField(primary_key=True)content = models.TextField()article = models.OneToOneField(to="Article", to_field="nid")class Meta:verbose_name = "文章详情"verbose_name_plural = verbose_nameclass Article2Tag(models.Model):"""文章和标签的多对多关系表"""nid = models.AutoField(primary_key=True)article = models.ForeignKey(to="Article", to_field="nid")tag = models.ForeignKey(to="Tag", to_field="nid")def __str__(self):return "{}-{}".format(self.article, self.tag)class Meta:unique_together = (("article", "tag"),)verbose_name = "文章-标签"verbose_name_plural = verbose_nameclass ArticleUpDown(models.Model):"""点赞表"""nid = models.AutoField(primary_key=True)user = models.ForeignKey(to="UserInfo", null=True)article = models.ForeignKey(to="Article", null=True)is_up = models.BooleanField(default=True)class Meta:unique_together = (("article", "user"),)verbose_name = "点赞"verbose_name_plural = verbose_nameclass Comment(models.Model):"""评论表"""nid = models.AutoField(primary_key=True)article = models.ForeignKey(to="Article", to_field="nid")user = models.ForeignKey(to="UserInfo", to_field="nid")content = models.CharField(max_length=255) # 评论内容create_time = models.DateTimeField(auto_now_add=True)parent_comment = models.ForeignKey("self", null=True)def __str__(self):return self.contentclass Meta:verbose_name = "评论"verbose_name_plural = verbose_name

 

转载于:https://www.cnblogs.com/ManyQian/p/9271324.html

总结

以上是生活随笔为你收集整理的python3进阶开发-第一个仿博客园的项目(1)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。