zoukankan      html  css  js  c++  java
  • geodjango七日学习笔记 (7.30整理本地笔记上传到网络)

    第一天进行到现在,在开端的尾巴,想起来写一个学习笔记,
    开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7
     
    接下来要做的是新建一个geodjango项目(python console / terminal,详见文档https://docs.djangoproject.com/en/2.1/ref/contrib/gis/tutorial/#setting-up
    (关于python console / terminal,
    其中,Python Console叫做Python控制台,即Python交互模式;Terminal叫做终端,即命令行模式。
    Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
    Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Python交互模式主要是为了调试Python代码用的。
    命令行模式与系统的CMD(命令提示符)一样,可以运行各种系统命令。)
    ),配置postgis,搞清楚该空间数据库的用法和之前的有何区别
     
    清楚你接下来要做的事:只要把网站运行出来,基础的框架搭好,后面的功能实现就不难,写几个需求,然后稍稍搬一下砖,come on baby
     
    第二天进度

    image

     
    如何用django搭建一个网站并发布,如何完善前端,如何在geodjango中结合geoserver,这些问题能解决
     
    深入理解web框架
    image
     
     
    参照asp.net web框架mvc模式,构建处理逻辑
     
    关于mvc和mtv
    MVC及MTV设计模式:
    在目前基于Python语言的几十个Web开发框架中,几乎所有的全栈框架都强制或引导开发者使用MVC设计模式。所谓全栈框架,是指除了封装网络和线程操作,还提供HTTP、数据库读写管理、HTML模板引擎等一系列功能的Web框架,比如Django、Tornado和Flask。
    MVC设计模式:
    最早由Trygve Teenskaug在1978年提出,上世纪80年代是程序语言Smalltalk的一种内部架构。后来MVC被其他领域借鉴,成为了软件工程中的一种软件架构模式。MVC把Web框架分为3个基础部分:
    模型(Model):用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法,是Web应用程序中用于处理应用程序的数据逻辑的部分,Model只提供功能性的接口,通过这些接口可以获取Model的所有功能。白话说,这个模块就是Web框架和数据库的交互层。
    视图(View):负责数据的显示和呈现,是对用户的直接输出。
    控制器(Controller):负责从用户端收集用户的输入,可以看成提供View的反向功能。
    这三个部分互相独立,但又相互联系,使得改进和升级界面及用户交互流程,在Web开发过程任务分配时,不需要重写业务逻辑及数据访问代码。
    MVC在Python之外的语言中也有广泛应用,例如VC++的MFC,Java的Structs及Spring、C#的.NET开发框架,都非常有名。
    MTV设计模式:
    Django对传统的MVC设计模式进行了修改,将视图分成View模块和Template模块两部分,将动态的逻辑处理与静态的页面展现分离开。而Model采用了ORM技术,将关系型数据库表抽象成面向对象的Python类,将表操作转换成类操作,避免了复杂的SQL语句编写。MTV和MVC本质上是一样的。
    模型(Model):和MVC中的定义一样
    模板(Template):将数据与HTML语言结合起来的引擎
    视图(View):负责实际的业务逻辑实现
    Django的MTV模型组织可参考下图所示:
     
     
     
     
    image
     
    关于ajax
    二、 AJAX
    我们知道,在前端的世界,有一种叫做AJAX的东西,也就是“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),经常被用来在不刷新页面的情况下,提交和请求数据。如果我们的Django服务器接收的是一个通过AJAX发送过来的POST请求的话,那么将很麻烦。
    为什么?因为AJAX中,没有办法像form表单中那样携带{% csrf_token %}令牌。
    那怎么办呢?
    好办!在你的前端模版的JavaScript代码处,添加下面的代码:
    // using jQueryfunction getCookie(name) { var cookieValue =null; if (document.cookie &&document.cookie !=='') { var cookies =document.cookie.split(';'); for (var i =0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want?if (cookie.substring(0, name.length +1) === (name +'=')) { cookieValue =decodeURIComponent(cookie.substring(name.length +1)); break; } } } return cookieValue; } var csrftoken = getCookie('csrftoken'); function csrfSafeMethod(method) { // 这些HTTP方法不要求CSRF包含return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method)); } $.ajaxSetup({ beforeSend:function(xhr, settings) { if (!csrfSafeMethod(settings.type) &&!this.crossDomain) { xhr.setRequestHeader("X-CSRFToken", csrftoken); } } });
    上面代码的作用就是让你的ajax的POST方法带上CSRF需要的令牌,它依赖Jquery库,必须提前加载Jquery。这是Django官方提供的解决方案哦,^-^。
     
     
     
    目前遇到的技术难题:单看geodjango文档,无法理解里面的操作如何与前端结合,或者说不知道前端怎么写,写哪里 ,这些技术该怎么用,我要做的很简单,就是搭一个前端界面,用openlayers或者inmap导入地图(这两者的区别在于inmap侧重大数据可视化,都是js库,还有EXT组件库,现在就就是不是很明确这些库的区别和实现的功能,webgis课没花多大精力留下的坑,卧槽),在此基础上添加功能,我也不知道这些功能如何添加上去
     
     
    过程中发现的严重问题:你的学习缺少思路的整理与梳理,技术可以不深究,但是逻辑的分支是得条条走通的,
     
     
    关于django的orm,目前接触到的最大的一个特点:并带有权限控制的增删改查界面,而且可以通过ORM为它生成的API来做到定制化的更新,比如直接读某个wiki上的配置,自动的写入数据库,伪代码如下:,就是把数据库结构对象化,自动实现连接数据库的增删改查,我不知道其他web框架是怎么搞数据库的,反很像python的这个高度面对对象很牛逼了,再用makemigration命令手动在数据库中生成数据表,该命令执行后返回一个initial.py文件,里面保存了数据迁移工作,创建了数据库模型对象,再使用migrate命令,创建真实的数据表,admin是一个自带app,可当作数据库管理后台
    伪代码:
    import pandas as pd
    settings = pd.read_html('http://某个gitlab的README 或者 某个redmine wiki')
    settings = clean(settings)
    update(settings)
     
     
    关于初步架构视图与url调用
    defregister(request): passreturn render(request, 'login/register.html') deflogout(request): passreturn redirect("/login/")
     
     
    今天发现耳机里放的音乐声音不能太大,我的金脑需要轻悠的旋律滋养,别给震坏了,眼神里散发的全是智慧的光芒。噗噗噗二逼
     
     
    接下来的需求分析:
     
     
    在实现地图全屏的基础上,在网页添加悬浮框,添加定位到当前按钮,收藏按钮,一件收藏(定位到当前位置,获取经纬度,位置信息,为全局变量,弹出商家数据录入界面,数据库设计是商铺类型,心动指数,商铺名称,该界面包含记事窗口,该窗口弹出的同时,把经纬度信息传入地图标点array,array中已经包含全国特征店铺数据,用做界面示例显示)把做,和其他基础按键,悬浮框样式,内中包含
     
    还有数据库修改问题,鼠标单击已有店铺图标弹出悬浮框,可以实现店铺删除,记事修改,等,鼠标移动到该图标位置悬浮框显示基础信息
     
     
     
    如何实现?技术问题:
     
    功能实现的具体构思:
    首先,有样例点,这些点,鼠标浮动弹出信息框,为区域特色样例信息,先搞一个数据库把还是,在地图div中加入一键收藏按键,我他妈不知道django的前端如何连到后台,反正点击后,自动获取当前位置,弹出编辑框,用户录入店名、商铺类型、心动指数、还有心情记录,点击提交后录入后台数据库,关闭弹窗,刷新地图显示,就完成了,现在一个问题是图层里的data是手动输入的,我要做到从数据库导入,这个不是问题可能,就是form就能解决,现在最大的问题是狗前端,
     
     
     
  • 相关阅读:
    Putty远程登录VMware虚拟机Linux(Ubuntu12.04)
    boost库在工作(39)网络UDP异步服务端之九
    UVA 1401 Remember the Word
    Windbg调试命令详解(1)
    数学之路(3)-机器学习(3)-机器学习算法-余弦相似度(1)
    2012-2013年度总结
    重建二叉树---根据前序和中序遍历结果重建二叉树
    Windbg调试命令详解(2)
    时间操作(JavaScript版)—最简单比較两个时间格式数据的大小
    WO+开放平台:API调用开发手记(话费计费接口2.0)
  • 原文地址:https://www.cnblogs.com/heikejingxiao/p/11269348.html
Copyright © 2011-2022 走看看