目錄前端
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' } } }
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)
widgets點不出來時能夠從新導一下 from django.forms import widgetspython
{% foo in form_obj %} <p> {{foo.lable}}:{{foo}}</p> {% endfor%}
foo.errors自己信息是一個列表 沒法顯示顏色 .o能夠獲取列表第一個元素 是一個純文本就有顏色了mysql
能夠經過更改forms表單裏的error_messags的數據來更改提示的錯誤信息jquery
.change 當框內容改變時觸發 .onload 會等項目徹底執行完才執行ajax
因爲第3部是一個異步操做 全部利用onload 等fileReader徹底執行完才執行sql
$()[0]獲取jQuery對象轉化爲JavaScript對象,這樣才能夠使用JavaScript對象的屬性和方法數據庫
.files[0]是JavaScript的屬性 就是獲取文件django
循環 jquery中的for循環json
會將form標籤內部全部的普通鍵值對打包成一個數組套自定義對象的行式bootstrap
ajax傳輸文件必須修改這兩個參數
跳轉頁面(路徑記得加/)
addClass() 方法向被選元素添加一個或多個類。該方法不會移除已存在的 class 屬性,僅僅添加一個或多個 class 屬性。提示:如需添加多個類,請使用空格分隔類名。
has_error:這是個固定寫法,表示輸入框出現錯誤時,框框會報紅,而當光標聚焦輸入框時,又會恢復原來的顏色
ajax請求要有一個後端回調的函數,這裏一般設置一個字典用於傳到前端
裏面還能夠加url鍵值,而後用jsonresponse包裹傳到前端,前段能夠直接用