BBS(未完待續)

BBS前期裝備

數據庫配置

1572612283741

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'bbs',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST' : '127.0.0.1',
        'PORT' : 3306,
        'CHARSET' : 'utf8',
        'OPTIONS': {
            'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"',
            'charset': 'utf8mb4'
        }

    }
}

表建立

1572764055625

from django.db import models
from django.contrib.auth.models import AbstractBaseUser


# Create your models here.
class UserInfo(AbstractBaseUser):
    phone = models.BigIntegerField(null=True)
    avatar = models.FileField(upload_to='avatar/', default='avatar/default.jpg')
    create_time = models.DateField(auto_now_add=True)

    blog = models.OneToOneField(to='Blog', null=True)


class Blog(models.Model):
    site_name = models.CharField(max_length=32)
    site_title = models.CharField(max_length=64)
    site_theme = models.CharField(max_length=64)


class Category(models.Model):
    name = models.CharField(max_length=32)

    blog = models.ForeignKey(to='Blog', null=True)


class Tag(models.Model):
    name = models.CharField(max_length=32)

    blog = models.ForeignKey(to='Blog', null=True)


class Article(models.Model):
    title = models.CharField(max_length=64)
    desc = models.CharField(max_length=256)
    content = models.TextField()
    create_time = models.DateField(auto_now_add=True)

    # 數據庫優化字段
    comment_num = models.BigIntegerField(default=0)
    up_num = models.BigIntegerField(default=0)
    down_num = models.BigIntegerField(default=0)

    # 外鍵字段
    blog = models.ForeignKey(to='Blog', null=True)
    tags = models.ManyToManyField(to='Tag', through='Article2Tag', through_fields=('article', 'tag'))
    category = models.ForeignKey(to='Category', null=True)


class Article2Tag(models.Model):
    article = models.ForeignKey(to='Article')
    tag = models.ForeignKey(to='Tag')


class UpandDown(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    is_up = models.BooleanField()


class Common(models.Model):
    user = models.ForeignKey(to='UserInfo')
    article = models.ForeignKey(to='Article')
    content = models.CharField(max_length=255)
    create_time = models.DateTimeField(auto_now_add=True)
    parent = models.ForeignKey(to='self', null=True)

靜態文件配置

1572764301666

forms表單

1572767536369

添加bootstrap樣式

1572865603273

widgets點不出來時能夠從新導一下 from django.forms import widgetspython

渲染前端頁面的方式

1572866046940

{% foo in form_obj %}
<p> {{foo.lable}}:{{foo}}</p>
{% endfor%}

forms表單展現錯誤信息

1572866367425

foo.errors自己信息是一個列表 沒法顯示顏色 .o能夠獲取列表第一個元素 是一個純文本就有顏色了mysql

1572866701493

能夠經過更改forms表單裏的error_messags的數據來更改提示的錯誤信息jquery

文件閱讀器

1572867256378

.change 當框內容改變時觸發 .onload 會等項目徹底執行完才執行ajax

因爲第3部是一個異步操做 全部利用onload 等fileReader徹底執行完才執行sql

註冊功能

前端獲取數據

1572876557602

獲取文件

1572870161306

$()[0]獲取jQuery對象轉化爲JavaScript對象,這樣才能夠使用JavaScript對象的屬性和方法數據庫

.files[0]是JavaScript的屬性 就是獲取文件django

.each()

1572869189606

循環 jquery中的for循環json

.serializeArray()

1572868925490

會將form標籤內部全部的普通鍵值對打包成一個數組套自定義對象的行式bootstrap

1572869306801

ajax傳輸文件

1572869970737

ajax傳輸文件必須修改這兩個參數

跳轉頁面

1572877202494

跳轉頁面(路徑記得加/)

添加class屬性

1572877377300

addClass() 方法向被選元素添加一個或多個類。該方法不會移除已存在的 class 屬性,僅僅添加一個或多個 class 屬性。提示:如需添加多個類,請使用空格分隔類名。

has_error:這是個固定寫法,表示輸入框出現錯誤時,框框會報紅,而當光標聚焦輸入框時,又會恢復原來的顏色

後端邏輯判斷

1572876639694

字典

1572878017812

ajax請求要有一個後端回調的函數,這裏一般設置一個字典用於傳到前端

裏面還能夠加url鍵值,而後用jsonresponse包裹傳到前端,前段能夠直接用

相關文章
相關標籤/搜索