1. 感谢alex~
  2. .Django请求生命周期
  3. 输入url 进入 urls(路由系统) 指向 views(视图函数)-》(获取模板) 里面的函数 再由函数返回字符串给用户
  4.  
  5. .路由系统
  6. /index/ -> 函数或类.as_view()
  7. /detail/(?P<nid>\d+) 函数(参数)或者类.as_view()(参数)
  8. /detail/ name="a1" ->include'app01.urls'
  9. ->视图中:reverse
  10. ->模板中:{% url "a1" %}
  11.  
  12. .视图函数
  13. FBV:函数
  14. def index(request,*args,**kwargs):
  15. ..
  16. CBV:类
  17. class Home(views.View):
  18. def get(self,request,*args, **kwargs)
  19.  
  20. 获取用户请求中的数据:
  21. request.POST.get() #获取name =
  22. request.GET.get()
  23. request.FILES.get()
  24.  
  25. #checkbox, select mutiple
  26. request.POST.getlist()
  27. request.GET.getlist()
  28. request.FILES.getlist()
  29.  
  30. request.path_info 获取当前请求的url
  31.  
  32. 文件对象 = request.FILES.get()
  33. 文件对象.name 文件名
  34. 文件对象.size 文件大小字节
  35. 文件对象.chunks() 文件切片 需要for循环 f.write()
  36.  
  37. #<form 特殊的设置></from>
  38.  
  39. 获取用户请求分会数据:
  40. render(request, "index.html" ,{'obj':,'k1':[,,,],'k2':{'name':"ljc"}}) #HTML模板的路径 不是url
  41.  
  42. redirect(url) return redirect('/cmdb/user_info/')
  43.  
  44. HttpResponse(字符串)
  45.  
  46. .模板语言
  47.  
  48. <html>
  49. <body>
  50. <h1>{{ obj }}<h1> 单值
  51. <h1> {{ k1. }}<h1>
  52. <h1> {{k2.name}}<h1>
  53.  
  54. {% for row in k1 %} #循环列表
  55. <p>{{row}}<p>
  56. {%endfor%}
  57.  
  58. {%for x,y in k2.items %} keys,values,items
  59. {{ x }} {{ y }}
  60. {%endfor%}
  61.  
  62. <body>
  63. <html>
  64.  
  65. .ORM
  66. a.创建类和字段 执行命令生成数据库
  67. class User(models.Model):
  68. nid = models.IntergerField() 数字 不需要加长度
  69. name = models.CharField(max_length=) 字符长度 只接收64个字符
  70.  
  71. python manage.py makemigrations
  72. python manage.py migrate
  73. # settings.py 注册APP需要添加
  74.  
  75. b.操作数据库 增删改查都是可以增字典 **dic

  76. models.User.object.create(nid=,name="ljc")
  77.  
  78. dic = {'name':'xx','nid':}
  79. models.User.objects.create(**dic)
  80.  
  81. obj = modeles.User.(nid=,name="ljc")
  82. obj.save()
  83.  

  84. models.User.objects.filter(id=).delete()

  85. models.User.objects.filter(id=).update(nid=,name="ljc")
  86. dic = {'name':'xx','nid':}
  87. models.User.objects.filter(id__gt=).update(**dic)
  88.  

  89. models.User.objects.filter(id=,name="root")查
  90. models.User.objects.filter(id__gt=)
  91. models.User.objects.filter(id__lt=)
  92. models.User.objects.filter(id__lte=)
  93. dic = {'name':'xx','nid__gt':} #nid大于19
  94. models.User.objects.filter(**dic)
  95.  
  96. 外键:
  97. class UserType(models.Model):
  98. caption = models.CharField(max_length=)
  99. id caption
  100. #.普通用户
  101. #.VIP用户
  102. #.游客
  103.  
  104. class User(models.Model):
  105. age = models.IntergerFiled()
  106. name = models.CharField(max_length = )
  107. user_type = models.ForeignKey("UserType",to_field='id') #约束 但是生成数据时为user_type_id
  108. name age user_type_id
  109. ljc
  110. zpt
  111. cc
  112.  
  113. v1 = models.Business.objects.all()
  114. #QuerySet 对象 all() first()
  115. #[obj(id, caption, code),obj2(id,caption,code) ]
  116. {% for row in v1 %}
  117. <li>{{row.id}}-{{row.caption}}-{{row.code}}</li>
  118. {% endfor%}
  119.  
  120. v2 = models.Business.objects.values('id','caption')
  121. #QuerySet 字典
  122. #[{'id':,'caption':"运维部"},{},{}] values变为字典了'
  123. {% for row in v2 %}
  124. <li>{{row.id}}-{{row.caption}}</li>
  125. {% endfor%}
  126.  
  127. v3 = models.Business.objects.values_list('id', 'caption')
  128. #QuerySet 元组
  129. #[(,运维部),(,开发)]
  130. {% for row in v3 %}
  131. <li>{{row.}}-{{row.}}</li>
  132. {% endfor%}
  133.  
  134. models.Business.objects.get(id=) 获取到一个对象 但一般不用
  135. **models.Business.objects.filter(id=).first() 如果获取对象! 如果存在为true 如果不存在返回null
  136.  
  137. 外键
  138. v = models.Host.objects.filter(nid__gt=)
  139. v[].b.caption ---> 通过点.来实现跨表查询
  140.  
  141. __双下划线跨表 filter后面想跨表时都用双下划线 b__caption b__code
  142. v2 = models.Host.objects.filter(nid__gt=).values('nid','hostname','b_id','b__caption')
  143. print(v2)
  144.  
  145. 自循环 forloop.counter 1开始
  146. forloop.counter0 0开始
  147. forloop.revcounter 倒序排列
  148. forloop.revcounter0 倒序0开始
  149. forlopp.last
  150.  
  151. {% for row in v1 %}
  152. <a>{{forloop.counter}}<a>
  153. {%endfor%}
  154.  
  155. position:fixed absosulte relative
  156.  
  157. .shade{
  158. position:fixed;
  159. top:;
  160. rigth:;
  161. left:;
  162. bottom:;
  163. background:black;
  164. opacity:0.6;
  165. z-index:;
  166. }
  167. .add-modal{
  168. position:fixed;
  169. height:300px;
  170. width:400px;
  171. top:100px;
  172. left:%;
  173. z-index:;
  174. border:1px solied red;
  175. background:white;
  176. margin-left:-200px
  177. }
  178. .hide{
  179. display:none;
  180. }
  181.  
  182. <select>
  183. <option>
  184. <option>
  185. <select>
  186.  
  187. redirect('/host')默认是以get
  188. render(request,'host.html')以post
  189.  
  190. Ajax提交
  191. $.ajax({
  192. url:'/host',
  193. type:"POST 或者 GET",
  194. data:{'k1':, "k2":"root"},
  195. success: function(data){ #这个函数等着服务端发送回复请求
  196. //data是服务器端返回的字符串
  197. var obj = JSON.parse(data)
  198.  
  199. }
  200. }
  201. })
  202. 内部都调用$.ajax 推荐还是$.ajax(
  203. {}
  204. )
  205. $.get(url="",data={},)
  206. $.getJson
  207. $.post
  208.  
  209. javascrip将字符串转为字典
  210. data = '{1,2,3,4}'
  211. var obj = JSON.parse(data);
  212.  
  213. 将列表、字典转为字符串
  214. li = [,,,]
  215. JSON.stringify(li)
  216.  
  217. 建议:永远让服务器端返回一个字典
  218. return HttpResponse(json.dumps(字典))
  219. python 字典/列表转为字符串
  220. json.dumps(字典)
  221.  
  222. python 字符串转为字典/列表
  223. json.loads(字符串)

django 笔记6 Ajax的更多相关文章

  1. django 笔记15 ajax系列

    参考 http://www.cnblogs.com/wupeiqi/articles/5703697.html # 原生操作# jQuery操作# 伪Ajax操作# XMLHttpReques 伪aj ...

  2. 【笔记】AJAX+SweetAlert插件实现删除操作

    [笔记]AJAX+SweetAlert插件实现删除操作 Django AJAX SweetAlert  展示 SweetAlert 插件介绍 SweetAlert 是一个 JS 插件,能够完美替代 J ...

  3. 【笔记】AJAX基础

    [笔记]AJAX基础 Django AJAX  知识储备:JSON 什么是 JSON JSON 是轻量级的文本数据交换格式 JSON 独立于语言和平台.JSON 解析器和 JSON 库支持许多不同的编 ...

  4. Django中的Ajax

    Ajax 很多时候,我们在网页上请求操作时,不需要刷新页面.实现这种功能的技术就要Ajax!(本人定义,不可迷信) jQuery中的ajax就可以实现不刷新页面就能向后台请求或提交数据的功能,我们仍然 ...

  5. Web框架——Django笔记

    Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序   ...

  6. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  7. django中的ajax组件

    目录 django中的ajax 向服务器发送请求的途径 Ajax的特点 基于jquery实现的ajax请求 利用ajax实现计算器 利用ajax实现登陆认证 利用form表单进行文件上传 利用ajax ...

  8. 学习笔记:AJAX 跨域问题

    学习笔记:AJAX 跨域问题 AJAX 跨域是浏览器的问题. 只要 xhr 请求,不同的域名就会出现 AJAX 跨域问题. JSONP 是一要简单方式,但是有很多弊端,需要修改服务端代码. JSONP ...

  9. Django框架 之 Ajax

    Django框架 之 Ajax 浏览目录 AJAX准备知识 AJAX与XML的比较 AJAX简介 jQuery实现的ajax AJAX参数 AJAX请求如何设置csrf_token 序列化 一.AJA ...

随机推荐

  1. HDU 4318 Contest 2

    简单的一题,使用类DIJK的算法就可以了. #include <iostream> #include <cstdio> #include <queue> #incl ...

  2. Detours改动段属性漏洞

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...

  3. ZOJ 3689 Digging(贪心+dp)

    Digging Time Limit: 2 Seconds      Memory Limit: 65536 KB When it comes to the Maya Civilization, we ...

  4. mydumper安装及安装故障汇总

     mydumper是针对mysql数据库备份的一个轻量级第三方的开源工具,备份方式术语逻辑备份.它支持多线程.备份速度远高于原生态的mysqldump以及众多优异特性. 因此该工具是DBA们的不二选 ...

  5. 为QML创建C++插件(下载)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明出处 https://blog.csdn.net/MatchYang/article/details/54564462 1. 为QML创建C++插件的 ...

  6. div在父集高度未知的情况下垂直居中的方法

    父集高度未知,子集高度已知: 可以使用弹性盒来解决: justify-content属性定义了项目在主轴上的对齐方式. align-items属性定义项目在交叉轴上如何对齐.

  7. C# 位域[flags]

    .NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天:还有就是用来表示多种复合的状态.这个时候一般需要为枚举加上[Flags]特性标记为位域,例如: [Flags]   enu ...

  8. Python的Flask框架入门-Ubuntu

    全文请见tuts code:An Introduction to Python's Flask Framework Flask是Python一个小而强大的web框架.学起来简单,用起来也容易,能够帮你 ...

  9. DBMS_XPLAN详细说明

    执行计划的组成部分 正确的看执行计划 DBMS_XPLAN 这个包是一个很好查看执行计划,显示很多格式,来分析执行计划中存在的问题 format:控制详细执行计划输出的格式,包含以下内容: BASIC ...

  10. APICloud关闭Key Building Resolve

    顶部菜单 --> 扩展 --> keybinding resolver --> toggle