zoukankan      html  css  js  c++  java
  • url分发、isinstance、request.GET请求之QueryDict和urlencode、post和get请求、limit_choices_to(Model字段)

    这个的路径是怎么来的,是有一个个的url路由分发过来的

    这两个是相等的,若url后面加括号了,那么前面就不用这个装饰器了;反之,若装饰器使用了,那么这个url后面就不要加括号了 

    eg:其他的views.test这是一个视图函数,而那个url()这个一个大列表,里面全是url,这里面就是所谓的二级分发的url,

    到这里之后,这里都是函数的返回值,这是一个大的元祖形式,虽然没有括号,但是有逗号,这里既是一个大的元祖

    再次点击get_url跳转到这里

    这个u前面是一个正则,,分别是应用名,表明,后面model_config这是url的样式类,同样,这里又是一个大的元祖

    点击这个config,会跳转到这里,且这个model_config是属于registry里面的一个值

    点击这个registry跳转到这里,这是一个字典

     

    类的实例化, 不加括号就不是启动实例,这个应该和设置一个别名是一样的;
    说白了 加括号就是调用init函数 不加括号就是不调用init函数,实例化加括号的话,自动执行init函数

     

    点击ModelStark到这里,看到其下面的方法

     

    —————————————————————————————————————————————————————————————————————

     isinstance    

      Python 中的isinstance函数,isinstance是Python中的一个内建函数。是用来判断一个对象的变量类型。

     

    其第一个参数(object)为对象,第二个参数为类型名(int...)或类型名的一个列表((int,list,float)是一个列表)。其返回值为布尔型(True or flase)。
     
    若对象的类型与参数二的类型相同则返回True。若参数二为一个元组,则若对象类型与元组中类型名之一相同即返回True。
     
    简单来说就是判断object是否与第二个参数的类型相同,举例如下:
     
    # -*- coding: utf-8 -*-
    p = '123'
    print "1.",isinstance(p,str)#判断P是否是字符串类型
    a = "中国"
    print isinstance(a,unicode) #判断a是否是Unicode编码
    print isinstance(a,(unicode,str))#判断a所属类型是否包含在元组中
    list1 = [1,2,3,4,5]
    print isinstance(list1,list)#判断list1是否是列表的类型
    

     参考:https://www.cnblogs.com/beginner-boy/p/7240673.html

    ——————————————————————————————————————————————

    request.GET请求之QueryDict和urlencode

    request.GET  >>>>>获得的是一个字典,但是打印出来的是<QueryDict:{}>   ,这个字典类型是不可变类型,这个类型的是无法直接进行赋值操作的,这个QueryDict源码中是写好的
    修改了这个之后,就能赋值操作了,但是最好还是不要进行修改源码;最好不要修改数据,要修改的话,可以复制一份,然后在复制的里面进行操作

     

    第二个知识点
    urlencode就是圈中这个格式,且只需要一个引号就行了

    内置的一个方法,即可得到我们想要的这种形式 (eg:a=1&b=2)

    这个可以把字典中的键值对,组装成字符串 (3.16日9.08可听下)

    总结,request.GET是一个不可变的字典,可以用它下面的这个urlencode弄成这样的格式。

     
    第三知识点: 因是不可变类型,要想修改这个字典,需要再括号内设置参数=True

     

    ——————————————————————————————————————————————

    post和get请求

    第一个是get请求,下面若是GET请求,那么能取到网址上的键值对,用POST的话,则是一个空字典;   
    第二个,是POST请求,那么也能用GET取出网址上的键值对,POST则取出标签中的键值对。

     

    ——————————————————————————————————————————————

     limit_choices_to   》》》》Model字段

      在model转换过程中,数据可以在这做筛选,按照字典内的数据条件进行筛选,把筛选之后的数据放到select标签中去

    limit_choice_to
        这个是干嘛的,意思就是平时用.......all()取出的是所有的字段
        用了这个limit.......之后,就只显示所过滤出来的字段,两个方框中间的代码,和最下面方框的代码效果是一样的,是一depart_id__in作为键,取出后面的1002、1003作为值,并在后台进行显示
    ps:depart_id__in这个不是跨表查询,直接depart__表名,这才算是跨表
    ps:
        ModelForm,就是把Model转换成form的而已
        由A 转成B,中介就是中间的部分modelform

    ——————————————————————————————————————————————

     
  • 相关阅读:
    【题解】【HDU 3487】Play with Chain
    学习+复习目标
    【题解】【NOIP2018PJ】对称二叉树
    NOIP2018复赛游记
    论蒟蒻的作死程度
    教你如何不用新分区添加swap
    云主机的极致优化
    Linux权限管理 特殊权限解析
    用户组管理
    vim编辑器详解
  • 原文地址:https://www.cnblogs.com/aaronthon/p/9183442.html
Copyright © 2011-2022 走看看