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 widgets

渲染前端页面的方式

1572866046940

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

forms表单展示错误信息

1572866367425

foo.errors本身信息是一个列表 无法显示颜色 .o可以获取列表第一个元素 是一个纯文本就有颜色了

1572866701493

可以通过更改forms表单里的error_messags的数据来更改提示的错误信息

文件阅读器

1572867256378

.change 当框内容改变时触发 .onload 会等项目完全执行完才执行

由于第3部是一个异步操作 所有利用onload 等fileReader完全执行完才执行

注册功能

前端获取数据

1572876557602

获取文件

1572870161306

$()[0]获取jQuery对象转化为JavaScript对象,这样才可以使用JavaScript对象的属性和方法

.files[0]是JavaScript的属性 就是获取文件

.each()

1572869189606

循环 jquery中的for循环

.serializeArray()

1572868925490

会将form标签内部所有的普通键值对打包成一个数组套自定义对象的行式

1572869306801

ajax传输文件

1572869970737

ajax传输文件必须修改这两个参数

跳转页面

1572877202494

跳转页面(路径记得加/)

添加class属性

1572877377300

addClass() 方法向被选元素添加一个或多个类。该方法不会移除已存在的 class 属性,仅仅添加一个或多个 class 属性。提示:如需添加多个类,请使用空格分隔类名。

has_error:这是个固定写法,表示输入框出现错误时,框框会报红,而当光标聚焦输入框时,又会恢复原来的颜色

后端逻辑判断

1572876639694

字典

1572878017812

ajax请求要有一个后端回调的函数,这里通常设置一个字典用于传到前端

里面还可以加url键值,然后用jsonresponse包裹传到前端,前段可以直接用

猜你喜欢

转载自www.cnblogs.com/bjlxxbj/p/11795449.html