Django框架的整合

Django总结:
    001.创建一个Django项目:
        Python manage.py django XXX;
    002.对数据库的操作:
        新建:
            create databases XXX;
        删除:
            drop databases XXX;
        进入:
            use databases db;
        查看:
            show databases;
    003.创建一个数据表:
        create table XXX(id int primary key auto_increment not null,name char(32))default varchar(utf8) innodb
    004.对数据行的操作:
        增:
            insert into tb11(name,age) values('XXX',12),('root',18);            
            insert into tb12(name,age) select name,age from tb11;
        查:
            select * from table;    #查看此表的所有数据
            select id from table;    #查看此表的所有ID
        删:
            delete from tb12 where id >=2 or name='XXX'
        改:
            update tb12 set name='alex',age=19 where id>12 and name='xx'
        分页:
            select * from tb12 limit 10 offset 20;
        排序:
            select * from tb12 order by id desc; 大到小
            select * from tb12 order by id asc;  小到大
    005.链表操作:
        select * from userinfo5 right join department5 on userinfo5.part_id = department5.id
        select * from userinfo5 innder join department5 on userinfo5.part_id = department5.id
    006.临时表:
        SELECT num,course_id from (select num,course_id from score where num > 60) as B;
    007.链接pymysql:
        新建一个App:
            Python manage.py startapp Appo1
        
        setting配置:
            App配置:
                INSTALLED_APPS中激活自己的App名字
            数据库配置:
                DATABASES={
                    'default': {
                    'ENGINE': 'django.db.backends.mysql',    #指定要建立连接的数据库
                    'NAME': 'blind',                        #数据库的名字
                    'USER':'root',                            #登录数据库的用户账号
                    'PASSWORD':'',                            #用户密码
                    'HOST':'localhost',                        #链接的地址
                    'POST':3306,                            #链接的端口
                    }
                }
            静态文件配置:
                STATICFILES_URLS=(
                    os.path.join(BASE_DIR.'static'),
                )
        __int文件:
            在int文件里写入数据库替换:pymysql.install_as_MySQLdb()
    008.ORM操作:
        增:
            models.UserGroup.objects.create(name='阿迦罗')
            models.UserInfo.objects.create(user='root',password='pwd',age=18,ug_id=1)
        删:
            models.UserGroup.objects.filter(id=2).delete()
        改:
            models.UserGroup.objects.filter(id=2).update(name='奥米茄')
        查:
            group_list = models.UserGroup.objects.all()
            group_list = models.UserGroup.objects.filter(id__lt=1)
            group_list = models.UserGroup.objects.filter(id__gt=1)
    009.models:
        F:                            #在更新时取到原来的值
        Q:                            #用于构造复杂的查询条件
        id__in=[11,12,13]            #id包含11,12,13
        id__gt=13                    #id大于13
        id__gte=13                    #id大于等于13
        id__lt=13                    #id小于13
        id__lte=13                    #id小于等于13
        count                        #获取个数
        contains                    #名字内容包含
        id__range=[1,2]                #id范围
        order by('id')                #asc
        order by('-id')                #desc    
        reverse()                    #反转
        extra                        #构造额外的查询条件或映射,如:子查询
        distinct()                    #去重
        annotate()                    #用于实现聚合函数的查询
        exclude()                    #条件查询
        value()                        #获取每行数据为字典格式
        value_list()                #获取每行数据为元组格式
        aggregate                    #聚合函数,获取字典类型的聚合结果
        get()                        #获取单个对象
        create()                    #创建对象
        bulk_create()                #批量插入
        get_or_create()                #如果存在,则获取,不存在,则创建
        first()                        #获取第一个
        last()                        #获取最后一个
        in_bulk()                    #根据主键ID进行查找
        exists()                    #是否有结果
        select_related                #查询主动做联表
        prefetch_related            #不做联表,做多次查询
        models.ManyToManyField        #只能创建3列
    010.安全机制:
        CSRF:POST时,需要用户携带随机字符串
                 Form
                 {% csrf_token %}
             Ajax
                 data
                 cookie中获取,添加到请求头
        Cookie:保存在客户端的键值对
               可以放很多,包括敏感信息
        XSS:不用safe
            mark_safe
            过滤关键字
        Session:保存在服务端的数据(本质是键值对)
            应用:依赖cookie
            作用:保持会话(Web网站)
            好处:敏感信息不会直接给客户端
            equest.session:
                增伤
                获取随机字符串
                主动设置超时时间
    011.Djangoadmin参数:
        DjangoAdmin提供的参数:
                                verbose_name        Admin中显示的字段名称
                                blank               Admin中是否允许用户输入为空
                                editable            Admin中是否可以编辑
                                help_text           Admin中该字段的提示信息
                                choices             Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作
                                                    如:gf = models.IntegerField(choices=[(0, '何穗'),(1, '大表姐'),],default=1)

                                error_messages      自定义错误信息(字典类型),从而定制想要显示的错误信息;
                                                    字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
                                                    如:{'null': "不能为空.", 'invalid': '格式错误'}

                                validators          自定义错误验证(列表类型),从而定制想要的验证规则
                                                    from django.core.validators import RegexValidator
                                                    from django.core.validators import EmailValidator,URLValidator,DecimalValidator,
                                                    MaxLengthValidator,MinLengthValidator,MaxValueValidator,MinValueValidator
                                                    如:
                                                        test = models.CharField(
                                                            max_length=32,
                                                            error_messages={
                                                                'c1': '优先错信息1',
                                                                'c2': '优先错信息2',
                                                                'c3': '优先错信息3',
                                                            },
                                                            validators=[
                                                                RegexValidator(regex='root_d+', message='错误了', code='c1'),
                                                                RegexValidator(regex='root_112233d+', message='又错误了', code='c2'),
                                                                EmailValidator(message='又错误了', code='c3'), ]
                        a. 直接通过
                            models.Userinfo.objects.create(....)
                            -- ModelForm
                        b. 影响Django自带的管理工具admin
    012.正反向操作:
        正向:
            filter() values,values_list() -> 跨表  fk__xxx
            objs = all()
            for obj in objs:
                obj.fk.
        反向:
            filter() values,values_list() -> 跨表  表名称__xxx
            objs = all()
            for obj in objs:
                obj.表名称_set.all()
    013.M2M:
        正向(有M2M):
            obj = ...
            obj.m.add()
            obj.m.remove()
            obj.m.set()
            obj.m.clear()
            obj.m.all()...
        反向:
            obj ...
            obj.表名_set.add
    014.模板导入:
        {% include 'pub.html' %}
        {% include 'pub.html' %}
        {% include 'pub.html' %}
        模板自定义函数:
            simple_filter
                最多两个参数,方式: {{第一个参数|函数名称:"第二个参数"}}
                可以做条件判断
            simple_tag
                无限制: {% 函数名 参数 参数%}
   

原文地址:https://www.cnblogs.com/gz369521/p/7107566.html