• Django 数据传递


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

    [root@localhost web]$ cat web/urls.py
    
    urlpatterns = patterns('',
        ....
        url(r'^db/$', 'blog.views.db'),    # 先定义访问的URL,然后再根据URL定义视图文件
    )
    [root@localhost web]$ cat blog/views.py
    from django.shortcuts import render
    from django.http import HttpResponse
    from django.template import loader, Context
    from blog.models import Host

    def db(request): h
    = Host() h.hostname = 'node04' # 这里直接把数据写死了 h.ip = '192.168.1.4' h.save() return HttpResponse("OK")

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

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

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


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

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


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

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    import urllib, urllib2
    
    data = {
        'hostname': 'node05',
        'ip': '192.168.1.5',
    }
    
    url = 'http://192.168.216.128:8000/db/'
    response = urllib2.urlopen(url, urllib.urlencode(data))
    print response.read()


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


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

    #!/usr/bin/env python
    #-*- coding:utf-8 -*-
    
    import urllib, urllib2
    
    data = {
        'hostname': 'node06',
        'ip': '192.168.1.6',
    }
    
    url = 'http://192.168.216.128:8000/db/' + urllib.urlencode(data)
    response = urllib2.urlopen(url)
    print response.read()

           

  • 相关阅读:
    Unix进程和线程管理及其异同
    UnixIPC之共享内存
    Unix/Linux常用文件操作
    java中int和Integer比较
    JAVA四种引用类型
    JAVA-Exception&Error
    JAVA特性-跨平台/面向对象
    JAVA单向链表实现
    linux安装及配置c++的opencv库
    static_cast、const_cast、dynamic_cast、reinterpret_cast
  • 原文地址:https://www.cnblogs.com/pzk7788/p/10340215.html
Copyright © 2020-2023  润新知