django实现前后台交互实例


Posted in Python onAugust 07, 2017

本文介绍了django实现前后台交互实例,分享给大家,希望对大家有所帮助

准备工作:

前端框架:AngularJS+bootstap

数据库:sqlite3

前端代码:
index.html

<!DOCTYPE html> 
<html> 
  <head> 
    <link href="/WebApi/scripts/bootstrap/dist/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" /> 
    <script type="text/javascript" src="/WebApi/scripts/angular/angular.min.js"></script> 
    <script type="text/javascript" src="/WebApi/controller/controller.js"></script> 
    <script type="text/javascript" src="/WebApi/service/service.js"></script> 
    <title>hello</title> 
  </head> 
  <body ng-app="myApp" ng-controller="myCtrl"> 
    <h2>hello world!</h2> 
     
<!--   <form role="form"> --> 
    <table> 
      <tr> 
        <td> 
          <div class="form-group"> 
            <input type="text" class="form-control" id="name"  
          placeholder="请输入用户名" ng-model="username"> 
          </div> 
        </td> 
      </tr> 
      <tr> 
        <td> 
          <div class="form-group"> 
            <input type="passwd" class="form-control" id="name"  
          placeholder="请输入密码" ng-model="password"> 
          </div> 
        </td> 
      </tr> 
      <tr> 
        <td> 
          <button type="button" class="btn btn-primary" ng-click="my_submit()">保存</button> 
        </td> 
      </tr> 
    </table> 
<!--   </form> 
 --> 
 
    <p class="text-danger">[[ result ]]</p> 
  </body> 
</html>

controller.js

var app = angular.module("myApp", []); 
app.config( 
  function($interpolateProvider) { 
    $interpolateProvider.startSymbol('[['); 
    $interpolateProvider.endSymbol(']]'); 
  })  
  .config(['$httpProvider', function($httpProvider) { 
    $httpProvider.defaults.xsrfCookieName = 'csrftoken'; 
    $httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken'; 
}]); 
app.controller("myCtrl", ["$scope", "service", function($scope, service) { 
  $scope.result = ""; 
  $scope.my_submit = function() { 
    console.log($scope.username); 
    console.log($scope.password); 
    service.do_save_info($scope.username, $scope.password, function(response){ 
      console.log(response); 
      $scope.result = response.result; 
    }); 
  }; 
}]);

service.js

app.service("service", ["$http", function($http) { 
  this.do_save_info = function(username, password, callback) { 
    $http({ 
      method: 'POST', 
      url: '/do_save_info', 
      data: { 
        'username': username, 
        'password': password 
      }, 
      headers: {'Content-Type': undefined}, 
    }).success(function(response){ 
      callback(response); 
    }); 
  }; 
}]);

后端代码:

urls.py

from django.conf.urls import patterns, include, url 
 
urlpatterns = patterns('app.views', 
  url(r'^index$', 'index'), 
  url(r'^/index$', 'index'), 
  url(r'^$', 'index'), 
  url(r'^/$', 'index'), 
  url(r'^do_save_info$', 'do_save_info'), 
)

views.py

from django.shortcuts import render_to_response 
from django.template import RequestContext 
from django.http import HttpResponse 
from django.views.decorators.csrf import ensure_csrf_cookie, csrf_exempt 
import json 
import models 
 
# Create your views here. 
@ensure_csrf_cookie 
def index(request): 
  return render_to_response('static/index.html', 
    context_instance=RequestContext(request)) 
 
def do_save_info(request): 
  result = {'result':'save success'} 
  try: 
    data = json.loads(request.body) 
    username = data.get("username", None) 
    password = data.get("password", None) 
    models.do_save_info(username, password) 
  except Exception, e: 
    result['result'] = 'save error' 
  return HttpResponse(json.dumps(result))

models.py

#!/bin/python 
# -*- coding: utf-8 -*- 
 
import os 
import sys 
import sqlite3 
 
def do_save_info(username, password): 
  db_path = os.path.normpath('/home/zhubao/Code/django_code/hello/db.sqlite3') 
  try: 
    conn = sqlite3.connect(db_path) 
    sql = "insert into t_user(username, password) values('%s', '%s')" % (username, password) 
    conn.execute(sql) 
    conn.commit() 
    conn.close() 
    print 'save success...' 
  except Exception, e: 
    print '------', str(e) 
    try: 
      conn.close() 
    except Exception, e: 
      pass

t_user表结构:

create table t_user(username varchar(255), password varchar(255));

页面演示:

刚打开页面如下:

django实现前后台交互实例

输入数据,点击保存:

django实现前后台交互实例

后台查看数据库:

django实现前后台交互实例

可以看到,已经保存在数据库里面了。

这只是个小示例,在此不考虑页面排版和安全性问题。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中zip和unzip数据的方法
May 27 Python
python创建进程fork用法
Jun 04 Python
简单解析Django框架中的表单验证
Jul 17 Python
安装ElasticSearch搜索工具并配置Python驱动的方法
Dec 22 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python的log日志功能及设置方法
Jul 11 Python
python对矩阵进行转置的2种处理方法
Jul 17 Python
Python网络编程之使用TCP方式传输文件操作示例
Nov 01 Python
Pytorch实现LSTM和GRU示例
Jan 14 Python
python实现逆滤波与维纳滤波示例
Feb 26 Python
基于python实现可视化生成二维码工具
Jul 08 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
python扫描proxy并获取可用代理ip的实例
Aug 07 #Python
python的多重继承的理解
Aug 06 #Python
python中 chr unichr ord函数的实例详解
Aug 06 #Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 #Python
Python实现将Excel转换为json的方法示例
Aug 05 #Python
Python实现抓取网页生成Excel文件的方法示例
Aug 05 #Python
Python基于Socket实现的简单聊天程序示例
Aug 05 #Python
You might like
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
Firebug 字幕文件JSON地址获取代码
2009/10/28 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
Vue声明式渲染详解
2017/05/17 Javascript
JavaScript基于扩展String实现替换字符串中index处字符的方法
2017/06/13 Javascript
浅谈vue中数据双向绑定的实现原理
2017/09/14 Javascript
详解angularjs 学习之 scope作用域
2018/01/15 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
详解JWT token心得与使用实例
2019/08/02 Javascript
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
Webpack设置环境变量的一些误区详解
2019/12/19 Javascript
Python捕捉和模拟鼠标事件的方法
2015/06/03 Python
尝试使用Python多线程抓取代理服务器IP地址的示例
2015/11/09 Python
Python 通配符删除文件的实例
2018/04/24 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python实现移动木板小游戏
2020/10/09 Python
详解HTML5通讯录获取指定多个人的信息
2016/12/20 HTML / CSS
MANGO官方网站:西班牙芒果服装品牌
2017/01/15 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
个人找工作的自我评价
2013/10/17 职场文书
校园十大歌手策划书
2014/02/01 职场文书
人力资源部门的主要职能
2014/02/22 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
保研推荐信
2014/05/09 职场文书
店面出租协议书范本
2014/11/28 职场文书
2015年妇女工作总结
2015/05/14 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers