51上有一个用Django开发BBS论坛的免费视频,就开发过程写个简要的笔记。课程地址:http://edu.51cto.com/course/course_id-2787.html
论坛的开发以“抽屉”http://dig.chouti.com/ 为原型。开发一个类似的BBS网站。
抽屉网站的主界面结构:
由此,在创建项目之前,确定数据的表结构:
首先,应当有一个发帖的表,
其次, 是哪个用户发的,应当创建一个用户表
再有,应当有一个评论表。评论表中有一个id与帖子表相连
还应当建立板块表。
在帖子表中,应当有如下数据结构。
表中数据的意义都会在代码段中给出解释,这里不详细解释。
在评论表中,应当有如下的信息:
这里,我们使用Django自带的评论表结构。这个表在Django1.8中被取消掉了,因此,新版本的Django中是没有这个表的,可以自己定义这个表结构。
然后是用户表:
最后是板块表:
1. 创建项目bbs_project:
在你要创建工程的文件夹用shift+右键,打开命令窗口,输入:
django -admin.py startproject bbs_project
创建项目
在该项目下,创建一个app01的应用,输入:
python manage.py startapp app01
在Django中,models可以用python代码的形式描述数据库的sql,并且在数据库中自动生成table。在app01中建立数据表的模型,首先将app01添加到已安装配置文件中,才能激应用:
关于model的具体内同,可以参考:http://4440271.blog.51cto.com/4430271/1656532
这里,还需要配置数据库信息
DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, # Django使用哪个数据库引擎 ‘NAME‘: ‘bbs_pro‘, # 将数据库名称告知 Django ‘USER‘: ‘root‘, # 告诉 Django 用哪个用户连接数据库 ‘PASSWORD‘: ‘*********‘, # 告诉Django连接用户的密码 ‘HOST‘: ‘127.0.0.1‘, # 告诉 Django 连接哪一台主机的数据库服务器 ‘PORT‘: ‘3306‘, # 端口号 } }
在models.py中,添加创建数据库表的代码:具体描述见:http://4440271.blog.51cto.com/4430271/1656532
代码如下:
# coding=utf-8 from django.db import models from django.contrib.auth.models import User # Create your models here. # 创建表 # 帖子表 class BBS(models.Model): category = models.ForeignKey(‘Category‘) # 帖子所在的板块 title = models.CharField(max_length=64) # 帖子标题,标题可以重复 summary = models.CharField(max_length=256, blank=True, null=True) # 帖子介绍 content = models.TextField() # 评论 author = models.ForeignKey(‘BBS_user‘) # 作者 view_count = models.IntegerField() # 浏览数 ranking = models.IntegerField() # 排名 created_at = models.DateTimeField(auto_now_add=True) # 创建日期 updated_at = models.DateTimeField(auto_now_add=True) # 修改日期 def __unicode__(self): return self.title # 模块表 版主 class Category(models.Model): name = models.CharField(max_length=32, unique=True) # 板块名称 administrator = models.ForeignKey(‘BBS_user‘) # 版主 def __unicode__(self): return self.name # BBS用户表 class BBS_user(models.Model): user = models.OneToOneField(User) # 一对一的外键 signature = models.CharField(max_length=128, default=‘This guy is too lazy to leave anything here‘) # 个性签名 photo = models.ImageField(upload_to="upload_imgs/", default="upload_imgs/user1.jpg") # 头像图片 def __unicode__(self): return self.user.username
在这个模型中,我们添加了
def __unicode__(self): return self.user.username
这行代码,这个代码的作用会在站点管理中显示出来:
这里显示的是用户名
在这个代码中,我们没有写commens,评论表的代码,因为使用了Django自带的评论表。
加入django自带的comments表,需要在settings.py已安装目录中加入:
同时加入site_id的值:
添加完成后,可以用下面的代码验证模型的有效性:
python manage.py validate
然后同步数据库:
python manage.py syncdb
这里需要一个pillow包,按提示在python目录下安装即可:pip install pillow。
创建完成后,运行服务器:
python manage.py runserver
在浏览器中打开
http://127.0.0.1:8000/admin/login/?next=/admin/
输入用户名密码登陆:
这里啰嗦一下如何创建超级用户:
在命令行中输入:python manage.py createsuperuser
然后在提示下输入用户名,邮箱,密码,即可
在上图的信息中填入刚才输入的用户名和密码
在admin.py中添加想要后台管理的模型:
# coding=utf-8 from django.contrib import admin from app01 import models class BBS_admin(admin.ModelAdmin): list_display = (‘title‘, ‘summary‘, ‘author‘, ‘signature‘, ‘view_count‘, ‘created_at‘) list_filter = (‘created_at‘,) search_fields = (‘title‘, ‘author__user__username‘) # 在BBS表中显示author表中的signature def signature(self, object): return object.author.signature # Register your models here. admin.site.register(models.BBS, BBS_admin) admin.site.register(models.Category) admin.site.register(models.BBS_user)
在命令行输入:
python manage.py makemigrations app01
然后
python manage.py migrate
就可以动态更改表。
在url.py中添加url配置:
这样,就会显示出要管理的模型:具体参考:http://4440271.blog.51cto.com/4430271/1656624
可以向其中添加数据
在admin中对Django的显示做一些定制,这段代码在前面admin.py中已经给出,这里详细介绍一下:
添加后的效果如图:
接下来,要加入前端的设计,这部分在下一节给出
本文出自 “thystar” 博客,请务必保留此出处http://4440271.blog.51cto.com/4430271/1663863
原文地址:http://4440271.blog.51cto.com/4430271/1663863