Django+Tastypie作后端,RequireJS+Backbone作前端的TodoMVC

一、配置好环境

接着前一篇的例子,顺带测试一下已下载下来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提供了!

时间: 2024-10-10 06:45:49

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

前后端分离后的前端时代

本文从前端开发的视角,聊一聊前后端分离之后的前端开发的那些事儿.阅读全文,大约需要8分钟. 什么是前后端分离 除了前端之外都属于后端了. 你负责貌美如花,我负责赚钱养家 在传统的像ASP,JSP和PHP等开发模式中,前端是处在一个混沌的状态中,可以说是没有独立的"人格"可言. 前端负责切图和编写静态页面模板,后端将数据渲染到前端提供的页面模板中,最后将页面渲染到浏览器展示. 这个过程中,前端只提供页面模板或者写一些JavaScript脚本,有的甚至JS脚本都是后端来写,前端的作用只局限

Android网络(3):HttpClient作客户端,Tomcat Servlet作服务器的交互示例

前面相继介绍了Android网络编程里的Socket传输图片.HttpURLConnection,今天看HttpClient. 第一部分:JavaEE版的Eclipse配置Tomcat [备注:开发后台服务器用Eclipse的JavaEE版最好的,但单就Tomcat来说(不写jsp之类的),本文下面的服务器方面操作在普通版的Eclipse也是可以的.我这里为了和ADT-bundle分开,特意重新安个JavaEE版的Eclipse.] 1.下载Eclipse的Tomcat插件:http://www

Jersey后端服务接收ajax前端的图片上传

近期的项目里需要在前端上传图片后端接收处理.前端JSP页面使用Ajax上传图片后端使用Jersey框架提供restful接口接收处理图片. 一.前端的处理 jsp页面中图片上传没有使用form表单而是直接使用file类型的input控件 <input type="file" name="file" class="inpTxtA" value="" id="appLogo"/> <input

synergy配置 Ubuntu作Server, Win 7作client

Synergy 允许你轻松地在你办公桌上多台计算机之间共享你的鼠标和键盘,它免费并且开放源代码.你只要将鼠标(指针)从一台计算机的屏幕边缘移出到另一个屏幕就行 了.甚至可以共享你的剪贴板.你所需要的仅仅是一个网络连接.Synergy是跨平台的(可以运行于Windows,Mac OS X和Linux). 下载地址: http://symless.com/download/free/ 我是用Ubuntu作server,win7作client配置synergy 客户端: win7的client比较好配

express搭建后端请求路由,前端进行访问对应的接口 后端解决跨域

代码在 ==>E:\nodes实战\myserve\testserve 1 express搭建后端请求路由,前端进行访问对应的接口 1) 创建项目目录 express 项目名 -e 然后按照提示就可以了 cd 项目名 2) 进入项目 下载依赖 cnpm i 在下载过程中出现 New minor version of npm available! 6.11.2 -> 6.13.1 Changelog: https://github.com/npm/cli/releases/tag/v6.13.1

实践:Backbone作前端,Django+Tastypie作后端的简单Web在线聊天室

一.界面设计: 二.数据模型设计 id 每个发言都有一个独立的id由tastypie自动生成 content 发言的内容 username 发言者 date 发言时间 三.前端制作 这里没有用到Backbone的Router,因为这里不需要记录hash记录 1.Div+CSS制作静态页面,这里item-template为每一个发言的模版 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <

DJANGO的ORM的Q查询作多字段外键的模糊查询样码

工作中用到的,存照一下. from django.db.models import Q if self.kwargs.has_key('search_pk'): search_pk = self.kwargs['search_pk'] return SubServer.objects.filter(Q(name__icontains=search_pk)|Q(app_name__name__icontains=search_pk))

Django中利用filter与simple_tag为前端自定义函数的实现方法

前言 Django的模板引擎提供了一般性的功能函数,通过前端可以实现多数的代码逻辑功能,这里称之为一般性,是因为它仅支持大多数常见情况下的函数功能,例如if判断,ifequal对比返回值等,但是稍微复杂一些的函数功能并不支持,例如通过模板来判断一个返回值是否是合法的数字类型,此时如果又不希望通过后台视图代码来实现的话,我们就可以自定义一些前端函数功能. Django为我们提供了两种方式,分别是filter和simple_tag,下面对比两种方式,分别实现判断返回值的功能函数. 准备工作 1.应用

django 开发之前后端分离开发模式

1. 什么是前后端分离开发的概念: 前端页面运行前端服务器上,负责页面的渲染(静态文件的加载)与跳转 后端代码运行在后端服务器上, 负责数据的处理(提供数据请求的接口) 2. 前后端分离开发碰到的问题 那就是跨域请求的问题: 什么是跨域问题: http协议不同, 端口不同, 服务器IP不同,这些都是跨域 3. 处理跨域的问题: 安装django-cors-headers模块 在settings.py中配置 # 注册app INSTALLED_APPS = [ ... 'corsheaders'