项目:开发一个简单的BBS论坛
需求:
- 整体参考“抽屉新热榜” + “虎嗅网”
- 实现不同论坛版块
- 帖子列表展示
- 帖子评论数、点赞数展示
- 在线用户展示
- 允许登录用户发贴、评论、点赞
- 允许上传文件
- 帖子可被置顶
- 可进行多级评论
知识必备:
- Django
- HTML\CSS\JS
- BootStrap
- Jquery
数据库models:
from django.db import models from django.contrib.auth.models import User # Create your models here. class UserProfile(models.Model): """用户""" user = models.OneToOneField(User,null=True,default=None) name = models.CharField(max_length=32) def __str__(self): return self.name class Article(models.Model): """文章""" title = models.CharField(max_length=128,unique=True) author = models.ForeignKey("UserProfile") category = models.ForeignKey("Category") pub_date = models.DateTimeField(auto_now_add=True,auto_created=True) tags = models.ManyToManyField("Tag",null=True) body = models.TextField(max_length=100000) head_img = models.ImageField(upload_to="uploads") status_choices = ((0,"草稿"),(1,"发布"),(2,"隐藏")) priority = models.SmallIntegerField(default=1000,verbose_name="优先级") def __str__(self): return self.title class Category(models.Model): """板块""" name = models.CharField(max_length=64,unique=True) set_as_to_menu = models.BooleanField(default=True) def __str__(self): return self.name class Tag(models.Model): """标签""" name = models.CharField(max_length=64,unique=True) def __str__(self): return self.name class Comment(models.Model): """评论""" article = models.ForeignKey("Article") p_node = models.ForeignKey("Comment",null=True,blank=True,related_name="my_child_comment") user = models.ForeignKey("UserProfile") date = models.DateTimeField(auto_now_add=True) comment = models.TextField(max_length=1024) def __str__(self): return self.comment class Like(models.Model): """点赞""" article = models.ForeignKey("Article") user = models.ForeignKey("UserProfile") date = models.DateTimeField(auto_now_add=True) class PrivateMail(models.Model): """私信""" pass
使用django自带的admin管理数据库->admin:
首先创建superuser用户用于登录admin自带的web:
python manage.py createsuperuser
其次admin模块代码:
注意:需要使用admin管理的表都需要注册一下
from django.contrib import admin # Register your models here. from bbs import models admin.site.register(models.UserProfile) admin.site.register(models.Article) admin.site.register(models.Comment) admin.site.register(models.Category) admin.site.register(models.Tag) admin.site.register(models.Like) admin.site.register(models.PrivateMail)
添加用户并激活授权则用户能登录并有相应的权限。
界面: