angularjs入门

Tutorial: 结合使用AngularJS和Django

时间:2015-08-07 16:46来源:网络整理 作者:KKWL 点击:
好吧,我承认自己很懒,时间又不够用。 翻译的几个文章都是虎头蛇尾,但我保证这次肯定不太监。 关键的单词不翻译,实在觉得翻译成汉语很别扭,括号里是参考翻译。 有问题和建

好吧,我承认自己很懒,时间又不够用。

翻译的几个文章都是虎头蛇尾,但我保证这次肯定不太监。

关键的单词不翻译,实在觉得翻译成汉语很别扭,括号里是参考翻译。

有问题和建议尽管提出来,我会改进完善。

 

Tutorial: Using AngularJS with Django

原文:      点我进原文

Posted on: 31 Jan 2014, 4:58 p.m. Categories: Django Frameworks Python

     我原本打算写一个如何结合Angular和Django的快速入门,但最后证明这只是一篇喝了红牛后的冲动产物。抱歉草草结束。(这是作者原话)

     看了几个结合使用Angular和Django的文章,我发现自己在重新发明轮子。尽管我给出的例子很粗糙,但是它们已经足够展示我在项目中如何操作。

 

Models (模型)

一个标准Django模型

/jobs/models.py

class Job(models.Model): name = models.CharField(max_length=50) description = models.TextField(null=True, blank=True)

目前为止还没什么特别之处。你所做的只是创建了一个简单的模型来存基本的工作信息。

 

The REST API (Tastypie)

 AngularJS被发明来终结webservices,所以你只需要提供你刚创建的Job模型就足够了。

 

Django在创建 RESTful APIs 上很有一套。 TastyPie是为Django创建的极好的web服务框架。 TastyPie及其强大,易于配置和使用。 抛开个人喜好,使用Django REST framework也能做同样的事情,甚至能直接用Django构造你自己的API响应。 使用哪个的选择权在你。 这篇文章我会使用 TastyPie。

若你不熟悉TastyPie ,看这个文档(点我) 。我不会详说安装等细枝末节的东西。我假定你已经安装配置好了TastyPie ,并却已经准备好和我继续下去了。

 

首先,你需要为你的jobs创建一个resource。 TastyPie遵循“Resources”这样的理念, 它把resource作为end user和objects(这里指的是Job模型)的中介。

 为Job模型创建一个适当的resource:

class JobResource(ModelResource): """ API Facet """ class Meta: queryset = Jobs.objects.all() resource_name = allowed_methods = [, , , ] authentication = Authentication() authorization = Authorization() always_return_data = True

我记得TastyPies官方文档建议在你的应用中用api.py来命名此文件。这也是我的做法,尽管它不是强制的。你可以随意命名,但是按照约定命名文件可以保证一致性。

JobResource 的一些设置已经超出了本文章的范围。但我乐于解释JobResource是继承自ModelResource的。 结合Tastypie与Django ORM两者使用。扩展它意味着你已经能够能深入API的基本实现了。

 

TastyPie 也能处理非ORM数据。通过直接扩展Resource,你也能够得到TastyPie提供的所有好处。 No SQL数据库描述如下(点我)。

 

现在你已经创建了模型和与之交互的方式。接下来,你需要一个把resource连接到实际URL的步骤,如此,AngularJS才能发挥它的作用。 简单的举例说明如何在Django URLConf里建立这样的连接。:

from tastypie.api import Api from .apps.your_app.api import JobResource v1_api = Api(api_name=) v1_api.register(JobResource()) urlpatterns = patterns('', (r, include(v1_api.urls)), )

在JobResource指定resource_name属性是最后一步。现在,你已经创立了一个有效绑定Resource到Job模型上的API。 检查它在server上是否工作良好,用你的浏览器访问 :8000/api/job/?format=json 。


 Forms

在你深入AngularJS前,我们来创建一个Job form。 Job form会让你在你的应用中轻松编写Jobs。我知道你会问,为什么要这么做。

好吧,Django其中一个哲学就是,不做重复劳动(Don't repeat yourself (DRY))。 所以创建为AngularJS写HTML,然后在Django也这么做就显得极不合理,因为Django会帮你做这件事。你可能已经有了很多需要转换的forms。为什么要重复这个过程? 点击 django-angular. 这是一个很酷的包,你会喜欢它的。

Quote: "Django-Angular is a collection of utilities, which aim to ease the integration of Django with AngularJS by providing reusable components."

 

------分隔线----------------------------