Python全栈 Web(Ajax JSON JQuery)

简介: Flask、Python、Django、框架、服务器、客户端、浏览器、交互、WEB、Python前端、CSS、JAVA、HTML、H5、PHP、JavaScript、JQuery、分布式开发
JOSN:
    Javascript Object Notation
    作用:
        主要约束前后端交互数据的格式
    JSON的格式
        表示单个对象
            使用{}  采用键值对的格式保存数据
            键必须使用双引号引起来
            相当于Python的字典
        表示多个对象
            使用[]表示一个数组
            数组中允许包含多个字符串或对象

jQuery中的循环:
    $arr.each(function(i, obj)){
        $arr:表示jQuery中的数组
        i:表示当前元素的下标
        obj:表示的是当前元素
    };

    $.each(arr,function(i, obj){
        arr:表示jQuery中的数组
        i:表示当前元素的下标
        obj:表示的是当前元素
    });
   
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <script src="/static/js/common.js"></script>
  <script src="/static/js/jquery-1.11.3.js"></script>
  <script>
    $(function(){
      /*为#btn绑定click事件*/
      $("#btn").click(function(){
        //1.创建xhr
        var xhr = createXhr();
        //2.创建请求
        xhr.open('get','/json',true);
        //3.设置回调函数
        xhr.onreadystatechange=function(){
          if(xhr.readyState==4&&xhr.status==200){
            var resText = xhr.responseText;
            /*console.log(typeof(resText));
            console.log(resText);*/

            //将resText 转换为 JSON对象
            var arr = JSON.parse(resText);
            // 循环
            $.each(arr,function(i,obj){
              console.log(obj.name);
              console.log(obj.age);
              console.log(obj.gender);
            });

          }
        }
        //4.发送请求
        xhr.send(null);
      });
    });
  </script>
</head>
<body>
  <button id="btn">JSON</button>
</body>
</html>

    后台处理JSON
    在后台查询出数据再转换为JSON的格式字符串  再响应
    给前端  到前端后再将字符串转换为JS对象

        1.后台获取数据
            类型允许为 元祖,列表、字典
        2.在后台将数据转换为符合JSON格式的字符串
        3.在后台将JSON格式的字符串进行响应
        4.在前端将JSON格式的字符串解析成JS对象


@app.route('/json_users')
def json_users():
  user = Users.query.filter_by(id=1).all()
  list = []
  for u in user:
    list.append(u.to_dict())
  return json.dumps(list)


@app.route('/01-users')
def users_01():
  return render_template('01-users.html')


    在Python中的JSON处理
        元祖、列表、字典、只用Python中的json类就可以
        import json
        jsonstr = json.dumps(数据结构)
        return jsonstr

@app.route('/json')
def json_views():
  list = ["Fan Bingbing","Li Chen","Cui Yongyuan"]
  dic = {
    'name':'Bingbing Fan',
    'age' : 40,
    'gender':'female',
  }

  uList = [
    {
      'name': 'Bingbing Fan',
      'age': 40,
      'gender': 'female',
    },
    {
      'name' : "Jinbao Hong",
      'age' : 70,
      'gender' : 'male'
    }
  ]
  jsonStr = json.dumps(uList)
  return jsonStr


    在前端中处理JSON
        由于在服务器响应回来的数据是string
        有些时候必要将响应回来的数据转换为JS对象或数组
        在js中
            JSON对象 = JSON.parse(JSON字符串)

var arr = JSON.parse(resText);

JQuery AJAX
    在jQuery中  提供了原生的AJAX的封装

    $obj.load(url, [data], [callback])
        作用:
            异步加载数据到$obj元素中
        参数:
            URL:异步请求地址
            data:传递给服务端的参数  可以传递字符串,JSON对象
            callback: 异步请求完成后要执行的操作 (回调函数)
            function(resText, statusText){
                resText:响应数据
                statusText:响应的状态文本
            }

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <button id="btnLoad">使用load方法加载</button>
  <div id="show"></div>
  <script src="/static/js/jquery-1.11.3.js"></script>
  <script>
    $(function(){
      $("#btnLoad").click(function(){
        //var params = "name=sf.zh&age=85";
        var params = {
          "name":'yinsusu',
          "age":25,
        }
        $("#show").load(
          '/03-server',
          params,
          function(resText,statusText){
            /*console.log("resText:"+resText);
            console.log("statusText:"+statusText);*/

            $(this).html("<h1>"+resText+"</h1>");
          });
      });
    });
  </script>
</body>
</html>


@app.route('/03-load')
def load_views():
  return render_template('03-load.html')

@app.route('/03-server',methods=['POST'])
def server_03():
  name = request.form.get('name')
  age = request.form.get('age')
  return "姓名:%s,年龄:%s" % (name,age)


    $.get(url, [data], [callback], [type])
        url:异步请求地址
        data:请求提交的数据 可以是字符串,json对象
        callback:请求成功时的回调函数
        function(resText){
            resText:响应后来的文本
        }
        type:
            响应回来的数据类型
            HTML:响应回来的文本是HTML文本(默认)
            text:响应回来的文本是普通文本
            json:响应回来的文本是json对象

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <button id="btnGet">发送get请求</button>
  <div id="show"></div>

  <script src="/static/js/jquery-1.11.3.js"></script>
  <script>
    $(function(){
      $("#btnGet").click(function(){
        $.get('/04-server',function(resText){
          /*console.log("type:"+typeof(resText));
          console.log(resText);*/
          $.each(resText,function(i,obj){
            console.log(obj.id + ":" + obj.cityname);
          });
        },'json');
      });
    });
  </script>
</body>
</html>


@app.route('/04-get')
def get_views():
  return render_template('04-get.html')

@app.route('/04-server')
def server_04():
  cities = City.query.all()
  list = []
  for city in cities:
    list.append(city.to_dict())
  return json.dumps(list)



相关文章
|
10月前
|
IDE 开发工具 Python
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级
魔搭notebook在web IDE下,使用jupyter notebook,python扩展包无法更新升级,不升级无法使用,安装python扩展包的时候一直停留在installing
259 4
|
10月前
|
Linux 数据库 数据安全/隐私保护
Python web Django快速入门手册全栈版,共2590字,短小精悍
本教程涵盖Django从安装到数据库模型创建的全流程。第一章介绍Windows、Linux及macOS下虚拟环境搭建与Django安装验证;第二章讲解项目创建、迁移与运行;第三章演示应用APP创建及项目汉化;第四章说明超级用户创建与后台登录;第五章深入数据库模型设计,包括类与表的对应关系及模型创建步骤。内容精炼实用,适合快速入门Django全栈开发。
507 1
|
数据采集 Web App开发 存储
打造高效的Web Scraper:Python与Selenium的完美结合
本文介绍如何使用Python结合Selenium,通过代理IP、设置Cookie和User-Agent抓取BOSS直聘的招聘信息,包括公司名称、岗位、要求和薪资。这些数据可用于行业趋势、人才需求、企业动态及区域经济分析,为求职者、企业和分析师提供宝贵信息。文中详细说明了环境准备、代理配置、登录操作及数据抓取步骤,并提醒注意反爬虫机制和验证码处理等问题。
455 1
打造高效的Web Scraper:Python与Selenium的完美结合
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
840 45
|
安全 数据库 开发者
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第26天】本文详细介绍了如何在Django框架下进行全栈开发,包括环境安装与配置、创建项目和应用、定义模型类、运行数据库迁移、创建视图和URL映射、编写模板以及启动开发服务器等步骤,并通过示例代码展示了具体实现过程。
477 2
|
SQL 关系型数据库 数据库
优化Web开发流程:Python ORM的优势与实现细节
【10月更文挑战第4天】在Web开发中,数据库操作至关重要,但直接编写SQL语句既繁琐又易错。对象关系映射(ORM)技术应运而生,让开发者以面向对象的方式操作数据库,显著提升了开发效率和代码可维护性。本文探讨Python ORM的优势及其实现细节,并通过Django ORM的示例展示其应用。ORM提供高级抽象层,简化数据库操作,提高代码可读性,并支持多种数据库后端,防止SQL注入。Django内置强大的ORM系统,通过定义模型、生成数据库表、插入和查询数据等步骤,展示了如何利用ORM简化复杂的数据库操作。
255 6
|
安全 API 开发者
Web 开发新风尚!Python RESTful API 设计与实现,让你的接口更懂开发者心!
在当前的Web开发中,Python因能构建高效简洁的RESTful API而备受青睐,大大提升了开发效率和用户体验。本文将介绍RESTful API的基本原则及其在Python中的实现方法。以Flask为例,演示了如何通过不同的HTTP方法(如GET、POST、PUT、DELETE)来创建、读取、更新和删除用户信息。此示例还包括了基本的路由设置及操作,为开发者提供了清晰的API交互指南。
304 6
|
JSON 安全 JavaScript
Web安全-JQuery框架XSS漏洞浅析
Web安全-JQuery框架XSS漏洞浅析
3342 3
|
SQL 缓存 数据库
构建高效Web应用:掌握Python中的ORM映射技术
在Web开发中,数据库操作至关重要,但直接编写SQL语句会增加代码复杂度并降低效率。对象关系映射(ORM)技术通过将对象模型映射为数据库表,使开发者能以面向对象的方式处理数据,提升开发效率和代码可维护性。本文以Python和SQLAlchemy为例,介绍ORM的基本概念、安装方法及使用技巧,并展示其在提升Web应用性能方面的优势。通过ORM,开发者可以简化数据库操作,专注于业务逻辑实现,提高开发效率和代码质量。
254 1