码迷,mamicode.com
首页 > 其他好文 > 详细

Django开发BBS---51网络课程笔记(1)

时间:2015-06-20 22:11:42      阅读:349      评论:0      收藏:0      [点我收藏+]

标签:文件夹   开发   课程   网络   工程   

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

Django开发BBS---51网络课程笔记(1)

标签:文件夹   开发   课程   网络   工程   

原文地址:http://4440271.blog.51cto.com/4430271/1663863

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!