Django+Tastypie作后端,Backbone作前端的TodoMVC
TodoMVC是各种js框架入门的比较经典的例子,详细可查看github地址https://github.com/tastejs/todomvc
接着上篇文章,
1,先在github上把backbone的todoMVC的例子下载下来
2,给其建立一个名为Todo的model(E:\project\tastypie\mysite\blog\models.py)
class Todo(models.Model):
title = models.CharField(max_length=200)
completed=models.BooleanField(default=False) def __str__(self):
return self.title def save(self, *args, **kwargs):
return super(Todo,self).save(*args, **kwargs)
参照前几篇的文章在命令行输入命令把其数据表应用到sqllite数据库。
3,添加api resource 和 配置tastypie的api接口的url
E:\project\tastypie\mysite\blog\api\resources.py
from tastypie.authorization import Authorization
from tastypie import fields
from tastypie.resources import ModelResource
from blog.models import Todo
class TodoResource(ModelResource):
class Meta:
queryset = Todo.objects.all()
resource_name = 'todo'
authorization = Authorization()
fields=['id','title','completed']
主url E:\project\tastypie\mysite\blog\urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin
from tastypie.api import Api
from blog.api.resources import EntryResource,UserResource,TodoResource v1_api = Api(api_name='v1')
v1_api.register(TodoResource()) urlpatterns = patterns('',
# Examples:
(r'^blog/', include('blog.urls',namespace="blog")),
(r'^api/', include(v1_api.urls)),
(r'^admin/', include(admin.site.urls)),
)
子url E:\project\tastypie\mysite\blog\urls.py
from django.conf.urls import patterns,url
from blog import views urlpatterns=patterns('',
url(r'^$',views.IndexView.as_view(),name='index'),
)
配置一下view,E:\project\tastypie\mysite\blog\views.py
from django.shortcuts import render
from django.views import generic # Create your views here.
class IndexView(generic.ListView):
template_name='blog/index.html'
context_object_name=''
def get_queryset(self):
return ''
4,把github上下载的backbone todomvc的静态文件(js,html,css文件)放到相应的目录下
index.html文件放到E:\project\tastypie\mysite\blog\templates\blog\index.html
其他js和css文件都放到新创建的E:\project\tastypie\mysite\blog\static\todos目录下
5,可以改改index.html文件中的js与css文件的引用路径,先试试用浏览器的localstorage本地跑起来看看
<link rel="stylesheet" href="/static/todos/bower_components/todomvc-common/base.css">
<script src="/static/todos/bower_components/todomvc-common/base.js"></script>
<script src="/static/todos/bower_components/jquery/dist/jquery.js"></script>
<script src="/static/todos/bower_components/underscore/underscore.js"></script>
<script src="/static/todos/bower_components/backbone/backbone.js"></script>
<script src="/static/todos/bower_components/backbone.localStorage/backbone.localStorage.js">//等会要注释掉
<script src="/static/todos/js/models/todo.js"></script>
<script src="/static/todos/js/collections/todos.js"></script>
<script src="/static/todos/js/views/todo-view.js"></script>
<script src="/static/todos/js/views/app-view.js"></script>
<script src="/static/todos/js/routers/router.js"></script>
<script src="/static/todos/js/app.js"></script>
6,本地运行没问题后,现在来改backbone前端js代码让其去连Tastypie的api
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 把localStorage那句注释掉,添加url为tastypie的api接口 和 接口数据解析函数parse去获取objects数据(注意:tastypie返回的json数据格式是{meta:{},objects:[{真正数据}]})
var Todos = Backbone.Collection.extend({
。。。
//localStorage: new Backbone.LocalStorage('todos-backbone'),
url: '/api/v1/todo/',
parse: function (response) {
return response.objects;
},
。。。
});
最后把 app-view.js和上面todos.js文件中的order改为id (这个id在tastypie中是个默认的int字段)
2)再运行django web服务器,尝试运行看看
TodoMVC已经由localstorage存取切换到用sqlLite数据库进行存取啦!哈哈
Django+Tastypie作后端,Backbone作前端的TodoMVC的更多相关文章
- 实践:Backbone作前端,Django+Tastypie作后端的简单Web在线聊天室
一.界面设计: 二.数据模型设计 id 每个发言都有一个独立的id由tastypie自动生成 content 发言的内容 username 发言者 date 发言时间 三.前端制作 这里没有用到Bac ...
- Django+Tastypie作后端,RequireJS+Backbone作前端的TodoMVC
一.配置好环境 接着前一篇的例子,顺带测试一下已下载下来example里面的backbone_require的例子 注意:直接本地用backbone.localStorage插件运行TodoMVC会报 ...
- k8s使用ceph的rbd作后端存储
k8s使用rbd作后端存储 k8s里的存储方式主要有三种.分别是volume.persistent volumes和dynamic volume provisioning. volume: 就是直接挂 ...
- 解决Django+Vue前后端分离的跨域问题及关闭csrf验证
前后端分离难免要接触到跨域问题,跨域的相关知识请参:跨域问题,解决之道 在Django和Vue前后端分离的时候也会遇到跨域的问题,因为刚刚接触Django还不太了解,今天花了好长的时间,查阅了 ...
- 旨在脱离后端环境的前端开发套件 - IDT Server篇
IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...
- 旨在脱离后端环境的前端开发套件 - IDT之Server篇
IDT,一个基于Nodejs的,旨在脱离后端环境的前端开发套件,目的就是能让前端开发完全脱离后端的环境,无论后端是什么模板引擎(主流),都能应付自如. IDT主要包括两大部分:Server + Bui ...
- Django + Taro 前后端分离项目实现企业微信登录
前言 还是最近在做的一个小项目,后端用的是Django搭配RestFramework做接口,前端第一次尝试用京东开源的Taro框架来做多端(目前需要做用于企业微信的H5端和微信小程序) 本文记录一下企 ...
- [后端人员耍前端系列]KnockoutJs篇:使用WebApi+Bootstrap+KnockoutJs打造单页面程序
一.前言 在前一个专题快速介绍了KnockoutJs相关知识点,也写了一些简单例子,希望通过这些例子大家可以快速入门KnockoutJs.为了让大家可以清楚地看到KnockoutJs在实际项目中的应用 ...
- 使用Docker跑MySQL 作为Django的存储后端
Docker的好处不科普了,用过的都说好. 不想污染自己开发机器上的文件环境,本萌新使用Docker运行Mysql,Redis来作为Django的存储后端和缓存. 在第一次安装过程中,我遇到了一些问题 ...
- 前后端分离框架前端react,后端springboot跨域问题分析
前后端分离框架前端react,后端springboot跨域问题分析 为啥跨域了 前端react的设置 springboot后端设置 为啥跨域了 由于前后端不在一个端口上,也是属于跨域问题的一种,所以必 ...
随机推荐
- [创业中, 寻求合作] 业务方向:车联网智能终端;APP蓝牙控制汽车;APP网络远程控制汽车 (联系电话:18503086002)
擅长领域 手机APP蓝牙控制汽车方案 手机APP网络远程控制汽车方案 手机APP与汽车车机的文件极速传输技术 车载OBD终端 (后装) 智能TBOX终端,Base on Linux,使用车规级硬件加密 ...
- MySQL插入数据返回id
按照应用需要,常常要取得刚刚插入数据库表里的记录的ID值,在MYSQL中可以使用LAST_INSERT_ID()函数,在MSSQL中使用 @@IDENTITY.挺方便的一个函数.但是,这里需要注意的是 ...
- wpf 获取datagrid中模板中控件
//获取name为datagrid中第三列第一行模板的控件 FrameworkElement item = dataGrid.Columns[].GetCellContent(dataGrid.Ite ...
- 10月28日PHP基础知识测试题
本试题共40道选择题,10道判断题,考试时间1个半小时 一:选择题(单项选择,每题2分): 1. LAMP具体结构不包含下面哪种(A) A:Windows系统 B:Apache服务器 C:MySQL数 ...
- Npoi导入导出Excel操作
之前公司的一个物流商系统需要实现对订单的批量导入和导出,翻阅了一些资料,最后考虑使用NPOI实现这个需求. 在winform上面实现excel操作:http://www.cnblogs.com/Cal ...
- 为什么为 const 变量重新赋值不是个静态错误
const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assig ...
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- fzoj1314 You are my brother
题目描述 Little A gets to know a new friend, Little B, recently. One day, they realize that they are fam ...
- [Java] Java执行Shell命令
Methods ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来 ...
- JavaScript闭包之“词法作用域”
大家应该写过下面类似的代码吧,其实这里我想要表达的是有时候一个方法定义的地方和使用的地方会相隔十万八千里,那方法执行时,它能访问哪些变量,不能访问哪些变量,这个怎么判断呢?这个就是我们这次需要分析的问 ...