• 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
                    无限制: {% 函数名 参数 参数%}
       

  • 相关阅读:
    制作Autorun的CD
    Sybase ASE MDA tables 装不上怎么办?
    对于TStringList.Find函数,我有话要说
    HH.exe CHM Operator Command.
    Delphi 7的一些常用的快捷键
    Explain Plan
    在Delphi中的Log
    subst windows下实用的磁盘映射工具
    Excel 2007 如何冻结多行&多列
    LinqToDataTable[转]
  • 原文地址:https://www.cnblogs.com/gz369521/p/7107566.html
Copyright © 2020-2023  润新知