zoukankan      html  css  js  c++  java
  • 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包裹传到前端,前段可以直接用

  • 相关阅读:
    可能用到的两款Linux工具tmux和tpp
    CCF技术动态第68期(云计算专题)...中国云计算发展概况与趋势...
    产生随机数//NULL大写,rand()在cstdlib,不在cmath
    28个Unix/Linux的命令行神器
    oAuth无痛入门指南
    CRM 客户关系管理和云计算...Salesforce企业级云计算的领导者...
    博客终于开通了
    传递与引用
    Java基础概念
    final、finally和finalize(二)
  • 原文地址:https://www.cnblogs.com/bjlxxbj/p/11795449.html
Copyright © 2011-2022 走看看