• BBS项目附加知识


    setting中

    创建一个静态文件

    STATICFILES_DIRS = [
        os.path.join(BASE_DIR,'static'),
    ]
    

    自定义auth_user文件

    AUTH_USER_MODEL = 'app01.Userinfo'
    

    连接MySQL数据库

    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bbs',
            'USER':"root",
            'PASSWORD':'123',
            'HOST':'127.0.0.1',
            'PORT':3306,
            'CHARSET':'utf8'
        }
    

    数据库中

    使用auth_user表需继承AbstractUser并扩展属性

    class Userinfo(AbstractUser):
    phone = models.CharField(max_length=11,null=True)
        # 当用户上传自己的头像的时候 会将用户上传的头像文件自动存入avatar文件夹下
    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)
    

    将用户上传的文件放到指定文件见

    avatar = models.FileFileld(upload_to='avatar/',default='avatar/default.jpg')
    

    创建数据的时候自动添加/刷新当前时间

    create_time = models.DateField(auto_now_add=True)
    auto_now=True 用来刷新时间,用于用户登录中
    

    存放大文本内容

    content = models.TextField()
    

    存放布尔类型

    is_up = models.BooleanField()
    

    外键

    user = models.ForeignKey(to='Userinfo')
    

    自关联self

    parent = models.ForeignKey(to='self',null=True)
    

    Form

    属性

    1、label ='名字':输入框前的提示信息
    2、error_messages={
    'required':'用户名不能为空',
    'invalid':'邮箱格式错误',
    }
    3、widget=forms.widgets.TextInput(attrs={"class":'form-control'}):输入框为什么性质的输入框,并为标签添加class属性

    钩子

    # 局部钩子  判断当前用户名是否存在
        def clean_username(self):
            username = self.cleaned_data.get('username')
            user_obj = models.Userinfo.objects.filter(username=username).first()
            if user_obj:
                self.add_error('username','用户名已存在')
            else:
                return username
    
        # 全局钩子  校验两次密码是否一直
        def clean(self):
            password = self.cleaned_data.get('password')
            confirm_password = self.cleaned_data.get('confirm_password')
            if not password == confirm_password:
                self.add_error('confirm_password','两次密码不一致')
            else:
                return self.cleaned_data
    

    html

    在标签循环过程中获取某个标签的id

    点击输入框上的文本也能使输入框获取到焦点需要将label中的for指向输入框的id

    <label for="{{ foo.auto_id }}">{{ foo.label }}</label>
    

    将文件框内选择的文件替换显示到桌面

    // 获取文件对象
    var fileObj = $(this)[0].files[0];
    // 利用内置对象 文件阅读器 FileReader
    var fileReader = new FileReader();
    // 将文件对象交给文件阅读器 生成文件对象的二进制数据
    fileReader.readAsDataURL(fileObj);  // 异步
    // DOM操作 修改img标签的src属性值
    fileReader.onload = function (){
    $('#id_img').attr('src',fileReader.result)
    };
    

    内置对象FormData完成既有普通键值又有文件数据的发送

    var formData = new FormData();
    formData.append('my_avatar',$('#id_file')[0].files[0]);
    

    serializeArray/each循环

    会将form标签内 普通的键值对 自动组成一个数组的形式返回给你

    $.each($('#myform').serializeArray(),function (index,obj) {  // $.each(你想要被循环的对象,函数(索引,单个单个的对象))
     // console.log(index,obj)
     formData.append(obj.name,obj.value)  // 仅仅是将普通的键值对添加进去
            });
    

    字符串拼接

    循环错误信息

    var targetId = '#id_' + index;
    $(targetId).next().html(obj[0]).parent().addClass('has-error')
    

    获取焦点事件focus

    // input框获取焦点事件
        $('input').focus(function () {
            // 将当前input所在的div移除has-error属性 并将下面的span标签内的内容也移除了
            $(this).next().html('').parent().removeClass('has-error')
        })
    
    

    django中测试脚本书写

    import os
    import sys
    
    if __name__ == "__main__":
    	os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day66.settings")
    	import django
    	django.setup()
    		  
    	from app01 import models
    	print(models.Userinfo.objects.all())
    
  • 相关阅读:
    CSS居中布局
    Dubbo源码学习(二)
    golang实现chunk方式的查询
    吴裕雄--天生自然 PHP开发学习:MySQL 插入数据
    吴裕雄--天生自然 PHP开发学习:连接 MySQL、创建表
    吴裕雄--天生自然 JAVA开发学习:基础语法
    吴裕雄--天生自然 PHP开发学习:高级
    吴裕雄--天生自然 PHP开发学习:多维数组
    吴裕雄--天生自然 PHP开发学习:表单
    吴裕雄--天生自然 PHP开发学习:表单
  • 原文地址:https://www.cnblogs.com/huanghongzheng/p/11234839.html
Copyright © 2020-2023  润新知