基于Django开发一个BBS案例

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介:

一、数据库表设计(models.py文件)

#!/usr/bin/env python

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

from __future__ import unicode_literals

from django.db import models

#导入django用户认证表

from django.contrib.auth.models import  User

# Create your models here.

class Article(models.Model):#帖子表

    title = models.CharField(u"文章标题",max_length=255,unique=True)

    categroy = models.ForeignKey("Category",verbose_name=u"板块")

    head_img = models.ImageField(upload_to="uploads")#每个帖子都要有一张图片

    content = models.TextField(u"文章内容")#帖子内容

    author = models.ForeignKey("UserProfile")#一篇文章只能有一个作者

    publish_date = models.DateTimeField(auto_now=True)#帖子发布日期

    hidden =models.BigAutoField(default=True)#帖子是否显示

    priority = models.IntegerField(u"优先级",default=1000)#帖子优先级

    def __unicode__(self):#设置默认返回值

        return "<%s,author:%s>" %(self.title,self.author)

class Comment(models.Model):#评论表

    article = models.ForeignKey("Article")#一条评论只能针对一篇文章

    user = models.ForeignKey("UserProfile")#由哪个用户发出评论

    #parent_comment = models.ForeignKey('Comment',)#父级评论

    parent_comment = models.ForeignKey("self", related_name = 'parcomment',blank=True,null=True)#父级评论

    date = models.DateTimeField(auto_now=True)#评论发布日期

    comment = models.TextField(max_length=1000)#评论内容

    def __unicode__(self):返回默认值

        return "<%s,user:%s>" %(self.comment,self.user)

class ThumbUp(models.Model):#点赞统计

    article = models.ForeignKey('Article')#点赞的文章

    user = models.ForeignKey('UserProfile')#点赞的用户

    date = models.DateTimeField(auto_now=True)#人点赞日期

    def __unicode__(self):#设置默认返回值

        return "<user:%s>" %(self.user)

class Category(models.Model):#板块表

    name = models.CharField(max_length=64,unique=True)#板块名字

    admin = models.ManyToManyField("UserProfile")#板块管理员多对多,多对多就是双向的一对多

    def __unicode__(self):

        return self.name

class UserProfile(models.Model):#用户信息表

    user = models.OneToOneField(User) #继承系统原生的User表

    name = models.CharField(max_length=32)

    groups = models.ManyToManyField("UserGroup") #属于哪个用户组

    def __unicode__(self):

        return self.name

class UserGroup(models.Model):#用户组表

    name = models.CharField(max_length=64,unique=True)#用户组名称

    def __unicode__(self):

        return self.name

二、数据初始化:

settings.py中数据库访问设置

DATABASES = {

    'default':{

        'ENGINE':'django.db.backends.mysql',

        'NAME':'s11bbs',

        'HOST':'127.0.0.1',

        'USER':'root',

        'PASSWORD':'123456',

    }

}

在执行同步之前要先创建数据库s11bbs,然后再执行以下语句

python manage.py migrate

mysql> use s11bbs;

Database changed

mysql> show tables;

+----------------------------+

| Tables_in_s11bbs           |

+----------------------------+

| auth_group                 |

| auth_group_permissions     |

| auth_permission            |

| auth_user                  |

| auth_user_groups           |

| auth_user_user_permissions |

| django_admin_log           |

| django_content_type        |

| django_migrations          |

| django_session             |

+----------------------------+

10 rows in set (0.00 sec)


python manage.py migrations

python manage.py migrate

mysql> show tables;

+----------------------------+

| Tables_in_s11bbs           |

+----------------------------+

| auth_group                 |

| auth_group_permissions     |

| auth_permission            |

| auth_user                  |

| auth_user_groups           |

| auth_user_user_permissions |

| django_admin_log           |

| django_content_type        |

| django_migrations          |

| django_session             |

| web_article                |

| web_category               |

| web_category_admin         |

| web_comment                |

| web_thumbup                |

| web_usergroup              |

| web_userprofile            |

| web_userprofile_groups     |

+----------------------------+

18 rows in set (0.00 sec)

mysql>


三、向admin中注册建立的数据库表

在admin中注册创建的表

from django.contrib import admin

import models

# Register your models here.

admin.site.register(models.Article)

admin.site.register(models.Category)

admin.site.register(models.Comment)

admin.site.register(models.ThumbUp)

admin.site.register(models.UserProfile)

admin.site.register(models.UserGroup)

admin.site.register(models.Article)


创建用户ucode

C:\Users\ryan\PycharmProjects\s11bbs>python manage.py createsuperuser

Username (leave blank to use 'ryan'): ucode

Email address:

Password:

Password (again):

Superuser created successfully.

C:\Users\ryan\PycharmProjects\s11bbs>




      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1868020,如需转载请自行联系原作者






相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 监控 数据库
Django 后端架构开发:高效日志规范与实践
Django 后端架构开发:高效日志规范与实践
416 1
|
7月前
|
存储 前端开发 应用服务中间件
Django 实战:静态文件与媒体文件从开发配置到生产部署
Django项目中,静态文件(Static Files)和媒体文件(Media Files)是两类不同用途的文件。本文详细介绍了它们的区别、配置方法以及在开发与生产环境中的处理方式,并结合用户头像上传功能进行实战演示,最后讲解了如何通过Nginx或OpenResty部署静态与媒体文件服务。
387 1
|
存储 缓存 前端开发
Django 后端架构开发:存储层调优策略解析
Django 后端架构开发:存储层调优策略解析
389 2
|
存储 安全 数据安全/隐私保护
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
Django 后端架构开发:富文本编辑器权限管理与 UEditor 、Wiki接入,实现 Markdown 文本编辑器
740 0
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。
704 67
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
803 45
|
IDE 关系型数据库 MySQL
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
这篇文章是关于如何创建一个Django框架,介绍Django的项目结构和开发逻辑,并指导如何创建应用和编写“Hello, World!”程序的教程。
844 3
Django学习一:创建Django框架,介绍Django的项目结构和开发逻辑。创建应用,编写主包和应用中的helloworld
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
447 2
|
C++ Python
Django视图函数VS类视图:如何选择最适合你的开发方式?
【8月更文挑战第31天】本文对比了Django中的函数视图和类视图。函数视图直接处理HTTP请求和响应,灵活且易于维护,适用于简单业务逻辑;类视图基于Python类,提供更丰富的功能和更高的灵活性,适合处理复杂业务逻辑。选择哪种视图取决于具体需求,合理使用两者可帮助你构建高效且易维护的Django应用。
426 0
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
301 2