天天看點

基于Django開發一個BBS案例

一、資料庫表設計(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)#人點贊日期

        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") #屬于哪個使用者組

class UserGroup(models.Model):#使用者組表

    name = models.CharField(max_length=64,unique=True)#使用者組名稱

二、資料初始化:

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

| 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)

建立使用者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,如需轉載請自行聯系原作者