一、配置好环境

接着前一篇的例子,顺带测试一下已下载下来example里面的backbone_require的例子

注意:直接本地用backbone.localStorage插件运行TodoMVC会报错,因为RequireJS工作时,加载js文件及template文件是异步加载,这就好比ajax异步请求需要涉及到跨域的问题,文件必须要在同一下域下才能被异步加载。

因此,直接把所有文件放到上篇文件的static(E:\project\tastypie\mysite\blog\static)目录下,把django启动一下就可以了,用backbone.localStorage本地运行,在浏览器输入http://localhost:8000/static/index.html 此时应该可以正常运行TodoMVC了

二、把backbone.localStorage切换到本地连接tastypie的api接口的url

1)改backbone的model文件与collection文件

E:\project\tastypie\mysite\blog\static\todos\js\models\todo.js 添加urlRoot为tastypie的api接口

app.Todo = Backbone.Model.extend({
。。。
urlRoot: '/api/v1/todo/',
。。。
});

改E:\project\tastypie\mysite\blog\static\todos\js\collections\todos.js 

/*global define */
define([
'underscore',
'backbone',
//'backboneLocalstorage',   //1,这个模块不需要用到,注释掉 
'models/todo'
], function (_, Backbone,Todo) {//1,跟据RequireJS规范这里把store删掉
'use strict'; var TodosCollection = Backbone.Collection.extend({
// Reference to this collection's model.
model: Todo, // Save all of the todo items under the `"todos"` namespace.
//localStorage: new Store('todos-backbone'),  //2,这里也不需要用到
url: '/api/v1/todo/',   //3,配置api接口,跟上篇一样 parse: function (response) {//4,取到objects真正数据,把meta数据过滤掉
return response.objects;
}, // Filter down the list of all todo items that are finished.
completed: function () {
return this.where({completed: true});
}, // Filter down the list to only todo items that are still not finished.
remaining: function () {
return this.where({completed: false});
}, // We keep the Todos in sequential order, despite being saved by unordered
// GUID in the database. This generates the next order number for new items.
nextOrder: function () {
return this.length ? this.last().get('id') + 1 : 1;//5,把order改为id,因为我们数据库里面是自动生成了递增的id默认是0,1,2...
}, // Todos are sorted by their original insertion order.
comparator: 'order' //无影响切换过来后没用到
}); return new TodosCollection();
});

2)最后E:\project\tastypie\mysite\blog\static\js\views\app.js 把appview文件中的order改为id

        // Generate the attributes for a new Todo item.
newAttributes: function () {
return {
title: this.$input.val().trim(),
id: Todos.nextOrder(),
completed: false
};
},

搞定,可以测试一下!http://localhost:8000/static/index.html 此时应该可以正常运行TodoMVC了,数据是由sqlLite提供了!

Django+Tastypie作后端,RequireJS+Backbone作前端的TodoMVC的更多相关文章

  1. Django+Tastypie作后端,Backbone作前端的TodoMVC

    TodoMVC是各种js框架入门的比较经典的例子,详细可查看github地址https://github.com/tastejs/todomvc 接着上篇文章, 1,先在github上把backbon ...

  2. k8s使用ceph的rbd作后端存储

    k8s使用rbd作后端存储 k8s里的存储方式主要有三种.分别是volume.persistent volumes和dynamic volume provisioning. volume: 就是直接挂 ...

  3. Django框架之模板语言特殊标记(将后端的数据显示到前端)

    后端代码 def GetMain(request): return render( request, "main.html", { "user1":" ...

  4. 解决Django+Vue前后端分离的跨域问题及关闭csrf验证

      前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道   在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...

  5. [总结帖] 后端MVC V.S. 前端MVVM

    Web编年史: Web1.0 —— 静态页面.简单预处理语言草案:PHP.JSP.ASP Web2.0 —— 企业级架构.一站式解决方案(MVC):J2EE.Spring.Asp.net Web2.5 ...

  6. 细说 Django — web 前后端分离

    一.所谓的前后端分离 1.渊源 前端发展史 2.特点 前端:负责 View 和 Controller 层 后端:只负责 Model 层,业务处理/数据等 3.优缺点 优点:解耦,解放前端,职责明确 缺 ...

  7. synergy配置 Ubuntu作Server, Win 7作client

    Synergy 允许你轻松地在你办公桌上多台计算机之间共享你的鼠标和键盘,它免费并且开放源代码.你只要将鼠标(指针)从一台计算机的屏幕边缘移出到另一个屏幕就行 了.甚至可以共享你的剪贴板.你所需要的仅 ...

  8. 前后端分离之Web前端架构设计

    架构设计:前后端分离之Web前端架构设计 在前面的文章里我谈到了前后端分离的一些看法,这个看法是从宏观的角度来思考的,没有具体的落地实现,今天我将延续上篇文章的主题,从纯前端的架构设计角度谈谈前后端分 ...

  9. 使用Docker跑MySQL 作为Django的存储后端

    Docker的好处不科普了,用过的都说好. 不想污染自己开发机器上的文件环境,本萌新使用Docker运行Mysql,Redis来作为Django的存储后端和缓存. 在第一次安装过程中,我遇到了一些问题 ...

随机推荐

  1. javascript判断手机浏览器版本信息

    <script type="text/javascript"> /* * 智能机浏览器版本信息: * */ var browser={ versions:functio ...

  2. jsContext全局函数调用与对象函数调用、evaluateScript

    evaluateScript:兼具js加载(生成具体的上下文)(函数与通用变量的加载),与函数执行的功能: 函数调用的方式有两种: 1)获取函数(对象),然后执行调用: [context[@" ...

  3. red hat关于桥接模式连不上外网或者没有IP

    很多人·在启动虚拟机后连接不上外网,即ifconfig没有ip地址,我总结了一下需要注意的地方: 以下全是在桥接模式. 1.在windows中打开任务管理器-->服务中找到一下几个服务,确保它们 ...

  4. 10月24日上午PHP面向对象

    面向对象 程序分为两种,一种是面向过程的,另一种是面向对象的.之前的学的都是面向过程的,按部就班的一步一步的按照顺序往下走. 面向对象: 1.什么叫做对象 一切皆为对象(一个对象由一组属性和有权对这些 ...

  5. sql中的!=判断的注意事项

    sql查询中where过滤条件为某字段 colName='xx'时一般不会出什么问题, 但如果想达到不为xx的时候就要注意了,用colName!= 'xx'可能就有问题了,因为该字段可能为空,为nul ...

  6. shell--2.shell数组

    shell 数组 (1)定义数组 shell中,用括号表示数组,数组元素用空格分开,定义数组的一般形式 arrt_name=(val1 val2 val3) 或者 arry_name=(val1 va ...

  7. (转载)phpcms v9两步实现专题栏目生成路径去掉html和special

    相信很多人都知道,phpcms v9专题是不支持自定义URL的,生成的专题路径是以/HTML/special/开头的.那么如何实现专题栏目生成路径去掉html和special呢?通过修改程序的PHP源 ...

  8. C和指针 第十一章 动态内存分配

    声明数组时,必须指定数组长度,才可以编译,但是如果需要在运行时,指定数组的长度的话,那么就需要动态的分配内存. C函数库stdlib.h提供了两个函数,malloc和free,分别用于执行动态内存分配 ...

  9. 12个非常实用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  10. Inode详解

    一.inode是什么 理解inode,要从文件储存说起. 文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector).每个扇区储存512字节(相当于0.5KB). 操作系统读 ...