在前面的访问数据库中,我们是这样来插入数据的:

  1. [root@localhost web]$ cat web/urls.py
  2.  
  3. urlpatterns = patterns('',
  4. ....
  5. url(r'^db/$', 'blog.views.db'), # 先定义访问的URL,然后再根据URL定义视图文件
  6. )
  1. [root@localhost web]$ cat blog/views.py
  2. from django.shortcuts import render
  3. from django.http import HttpResponse
  4. from django.template import loader, Context
  5. from blog.models import Host
  6.  
  7. def db(request):
  8. h = Host()
  9. h.hostname = 'node04' # 这里直接把数据写死了
  10. h.ip = '192.168.1.4'
  11. h.save()
  12. return HttpResponse("OK")

我们可以通过 POST 或 GET 方法来传递数据:

GET 是直接以网址形式打开,网址中包含了所有的参数,浏览器会把 http header 和 data 一并发送出去,服务器响应200(返回数据)
POST 是浏览器先发送 http header,服务器响应100 continue,浏览器再发送 data,服务器响应200 ok(返回数据),具体用什么方法是由服务器来决定的

  1. [root@localhost web]$ cat blog/views.py
  2. ....
  3. from blog.models import Host # 加载数据模型
  4.  
  5. def db(request):
  6. if request.POST:
  7. hostname = request.POST.get('hostname') # 从POST数据中获取主机名
  8. ip = request.POST.get('ip') # 从POST数据中获取IP地址
  9. host = Host() # 实例化数据模型
  10. host.hostname = hostname # 插入主机名数据
  11. host.ip = ip # 插入IP地址数据
  12. host.save() # 保存数据到数据库
  13. return HttpResponse('OK') # 最后返回一个结果给页面
  14. elif request.GET:
  15. hostname = request.GET.get('hostname')
  16. ip = request.GET.get('ip')
  17. host = Host()
  18. host.hostname = hostname
  19. host.ip = ip
  20. host.save()
  21. return HttpResponse('OK')
  22. else:
  23. return HttpResponse('No Data!')
  1. [root@localhost web]$ cat web/settings.py
  2. ......
  3.  
  4. MIDDLEWARE_CLASSES = (
  5. ......
  6. #'django.middleware.csrf.CsrfViewMiddleware', # 注释掉该项,如果不注释掉,那么发送POST请求需要字符串验证
  7. )

通过 POST 方法传递数据(第一种方式):

  1. [root@localhost web]$ curl -d hostname='node05' -d ip='192.168.1.5' http://192.168.216.128:8000/db/
  2. OK

通过 POST 方法传递数据(第二种方式):

  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-
  3.  
  4. import urllib, urllib2
  5.  
  6. data = {
  7. 'hostname': 'node05',
  8. 'ip': '192.168.1.5',
  9. }
  10.  
  11. url = 'http://192.168.216.128:8000/db/'
  12. response = urllib2.urlopen(url, urllib.urlencode(data))
  13. print response.read()

通过 GET 方法传递数据(第一种方式):

通过 GET 方法传递数据(第二种方式):

  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-
  3.  
  4. import urllib, urllib2
  5.  
  6. data = {
  7. 'hostname': 'node06',
  8. 'ip': '192.168.1.6',
  9. }
  10.  
  11. url = 'http://192.168.216.128:8000/db/' + urllib.urlencode(data)
  12. response = urllib2.urlopen(url)
  13. print response.read()

Django 数据传递的更多相关文章

  1. Django 前后台的数据传递示列

    Django 前后台的数据传递的方法 Django 从后台往前台传递数据时有多种方法可以实现. 最简单的后台是这样的: ? 1 2 3 4 from django.shortcuts import r ...

  2. Django与JS交互的示例代码-django js 获取 python 字典-Django 前后台的数据传递

    Django与JS交互的示例代码 Django 前后台的数据传递 https://www.cnblogs.com/xibuhaohao/p/10192052.html 应用一:有时候我们想把一个 li ...

  3. EXTJS中grid的数据特殊显示,不同窗口的数据传递

    //EXTJS中grid的数据特殊显示renderer : function(value, metaData, record, rowIndex, colIndex, store, view) { v ...

  4. Activity系列讲解---数据传递

    在Android中,不同的Activity实例可能运行在一个进程中,也可能运行在不同的进程中.因此需要一种特别的机制帮助我们在Activity之间传递消息.Android中通过Intent对象来表示一 ...

  5. vue2.0 组件之间的数据传递

    组件间的数据传递// 父组件<template><div class="order"><dialog-addpro v-on:closedialog= ...

  6. ASP.NET MVC3中Controller与View之间的数据传递总结

    一.  Controller向View传递数据 1.       使用ViewData传递数据 我们在Controller中定义如下: ViewData["Message_ViewData& ...

  7. ASP.NET MVC3中Controller与View之间的数据传递

    在ASP.NET MVC中,经常会在Controller与View之间传递数据,因此,熟练.灵活的掌握这两层之间的数据传递方法就非常重要.本文从两个方面进行探讨: 一.  Controller向Vie ...

  8. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

    通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容.本章的目标是在今天学习结束时利用最佳实践解决方案创建一个小型的MV ...

  9. MVC数据传递

    一.数据传递 1.ViewData[]: 用法:action中:ViewData["key"]="aaa";,V层接收ViewData["key&qu ...

随机推荐

  1. python 调用pymysql模块遇到\转义问题解决办法

    1.问题情况 本来存入mysql的是字典,有汉字,由于python版本是2.7,所以在json的时候把我的值变成了unicode,那么在调用pymysql的时候,mysql给我转义取消了. 存之前: ...

  2. tornado 的 define 和options方法解读

    一.源码解读 tornado是facebook开源的非阻塞web容器,类似java的netty,tornado.options是负责解析tornado容器的全局参数的,同时也能够解析命令行传递的参数和 ...

  3. 【C#】自定义容器控件,设置界面控件,支持设计器拖入控件

    先上效果图: 1.先重写设置界面的控件功能: public partial class SetterControl : UserControl { public SetterControl() { I ...

  4. android设置主mic/副mic录音

    //添加MIC设置参数 /hal/audio_extn/audio_extn.c @@ -75,6 +75,7 @@ struct audio_extn_module { bool ras_enabl ...

  5. Python——eventlet.hubs

    Hub构成了 Eventlet 的事件循环,它分发 I/O 事件.调度 greenthread.Hub的存在使得协程被提升为 greenthreads. Eventlet 有多种hub的实现,所以在使 ...

  6. Python——signal

    该模块为在Python中使用信号处理句柄提供支持.下面是一些使用信号和他们的句柄时需要注意的事项: 除了信号 SIGCHLD 的句柄遵从底层的实现外,专门针对一个信号的句柄一旦设置,除非被明确地重置, ...

  7. Erlang Trace机制

    从FTP模块学习先进的诊断技术(Erlang Trace机制) http://blog.yufeng.info/archives/466

  8. LVS 实现负载均衡原理及安装配置详解

    负载均衡集群是 load balance 集群的简写,翻译成中文就是负载均衡集群.常用的负载均衡开源软件有nginx.lvs.haproxy,商业的硬件负载均衡设备F5.Netscale.这里主要是学 ...

  9. 一款CSS3仿Google Play的垂直菜单

    之前分享过一款非常酷的CSS3垂直下拉动画菜单,是多级菜单.今天我们来看一款也是用CSS3制作的垂直菜单,是仿Google Play的菜单,菜单项都带有可爱的小图标,可以先来看看效果图: 当然你可以在 ...

  10. APK防反编译技术

    APK防反编译技术 下载地址:地址 我们的APK实际上就是一个ZIP压缩文件,里面包括有一个classes.dex.我们编译后生成的程序代码就所有在那里了, 通过apktool等工具能够轻松地将它们反 ...