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

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

原文地址:https://www.cnblogs.com/aaronthon/p/9183442.html

时间: 2024-10-31 05:08:09

url分发、isinstance、request.GET请求之QueryDict和urlencode、post和get请求、limit_choices_to(Model字段)的相关文章

Android 各大网络请求库的比较及实战,android请求库实战

自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection 最开始学android的时候用的网络请求是HttpUrlConnection,当时很多东西还不知道,但是在android 2.2及以下版本中HttpUrlConnection存在着一些bug,所以建议在android 2.3以后使用HttpUrlConnection,之前使用HttpClient.

django url分发,视图,模板回顾

Django基础轮廓 MTV+controller 一 url分发系统: 1 简单使用 url(r'^articles/2003/$', views.special_case_2003), # special_case_2003(request) url(r'^articles/(\d{4})/$', views.year_archive), # year_archive(request,1999) url(r'^articles/(\d{4})/(\d+)$', views.month_arc

nginx url分发 特别说明

先引用网上配置url分发的方法: pstream freeke1 { server 10.0.0.1; } upstream freeke2 { server 10.0.0.2; } 配置一个all的目的是兼容不进行hash的剩余的页面,比如首页 upstream linuxde { server 10.0.0.1; server 10.0.0.2; } 使用location划分 location ~* /a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r/ { proxy_

理解互联网域名请求实现过程,以及Nodejs的http请求小谈

前提:在学习开发互联网网站程序前,需要了解知道一个客户端请求,如何能展现成一个炫丽的网页的. 一.域名请求实现 这幅图足以说明一个域名请求的过程了吧 二.服务器端的处理(Nodejs示例) 直接上nodejs代码 1 var http = require('http'); 2 3 http.createServer(function(req, res) { 4 if (req.method === 'GET') { 5 var html; 6 switch (req.url) { 7 case

请求转发:MVC设计模式、细节、请求域属性的编程实例、请求重定向和请求转发的区别

MVC设计模式将一次请求的响应过程分成三个功能模块(一般称之为层)来协同完成,这三个模块分别是Model(模型层).View(视图层).Controller(控制层). Model是可作为JavaBean使用的业务对象:View是负责创建显示界面的JSP页面:Controller通常是一个接收用户请求的Servlet程序,它根据请求创建相应的model对象和调用model对象的业务方法,最后再选择一个View去创建网页文档内容并回送给客户端. Controller调用RequestDispatc

svn报错“请求的名称有效 但是找不到请求的类型的数据”的解决方案之一

昨天收到同事的易信,说是svn不能用了. 由于只有他自己反映无法使用,而且,我使用svn也没有问题.因此,这事基本应该和服务没什么关系.看了一下进程,也没什么问题. [[email protected] svndata]# ps -ef|grep svn root      2298     1  0 Feb13 ?        00:00:00 svnserve -d -r /data/svndata/yunqiandai/ root      8556  8489  0 13:44 pts

HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求

问题:HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求. 原因:Web 服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大小时30M). 解决:更改asp.net文件上传大小限制 1. 修改IIS的applicationhost.config 文件位置: %windir%/system32/inetsrv/config/applicationhost.config 找到<requestFiltering>

转:IIS请求筛选模块被配置为拒绝超过请求内容长度的请求

HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大小时30M). 解决方法 1. 修改IIS的applicationhost.config a.文件位置: %windir%/system32/inetsrv/config/applicationhost.config b.找到 <requestFiltering> 节点 c.为这个节点添加如下元素

asp.net上传大文件-请求筛选模块被配置为拒绝超过请求内容长度的请求

HTTP错误404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求,原因是Web服务器上的请求筛选被配置为拒绝该请求,因为内容长度超过配置的值(IIS 7 默认文件上传大小时30M). 要解决方法即是更改ASP.NET文件上传大小限制: 1. 修改IIS的applicationhost.config 文件位置: %windir%/system32/inetsrv/config/applicationhost.config 找到<requestFiltering>节