20

我将开始一个项目,我将在其中使用 pyhon django 和 rest 框架,AngularJs 和 restangular 和 Mongodb。我是否应该开始使用 angularjs 编写我的客户端应用程序,然后关心应该是什么文件夹结构,以便我可以挂钩我的后端。或者我应该先考虑文件夹结构,然后再继续。即使在第二个选项中,我也对我应该存在的文件夹结构类型感到困惑,因为我对所有这些技术都很天真。到现在我想到的文件夹结构是这样的..

Root Folder
| -- api
     |-- view.py
     |-- url.py
     |-- model.py
| -- app
     |-- css
     |-- js
     |-- images
     |-- index.html

请帮助..任何建议将不胜感激...

4

2 回答 2

16

这就是我的处理方法。其他人主张将您的 django 和 angularjs 应用程序完全解耦,但这可能对您有用。

您有两个应用程序,帐户应用程序和其他应用程序。您想在两者中创建模块化的角度应用程序,这些应用程序可以“插入”到另一个 django 项目中(只需最少的修改)。

Account App 静态文件结构:

│ ├── 静态
│ │ └── 应用
│ │ └── js
│ │ ├── 应用程序
│ │ │ └── accountApp.js
│ │ ├── 控制器
│ │ │ └── accountControllers.js
│ │ ├── 指令
│ │ │ └── accountDirectives.js
│ │ ├── 过滤器
│ │ │ └── accountFilters.js
│ │ └── 服务
│ │ └── accountServices.js

其他App静态文件结构:

│ ├── 静态
│ │ └── 应用
│ │ └── js
│ │ ├── 应用程序
│ │ │ └── otherApp.js
│ │ ├── 控制器
│ │ │ └── otherControllers.js
│ │ ├── 指令
│ │ │ └── otherDirectives.js
│ │ ├── 过滤器
│ │ │ └── otherFilters.js
│ │ └── 服务
│ │ └── otherServices.js

应用基础文件结构:

│ ├── 静态
│ │ ├── 应用
│ │ │ ├── js
│ │ │ │ ├── app.js
│ │ │ │ ├── controllers.js
│ │ │ │ ├── directives.js
│ │ │ │ ├── filters.js
│ │ │ │ └── services.js

主项目静态文件夹(运行manage.py collectstatic后):

│ ├── 静态
│ │ ├── 应用
│ │ ├── js
│ │ ├── app.js
│ │ ├── controllers.js
│ │ ├── directives.js
│ │ ├── filters.js
│ │ ├── services.js
│ │ ├── 应用程序
│ │ │ └── accountApp.js
│ │ │ └── otherApp.js
│ │ ├── 控制器
│ │ │ └── accountControllers.js
│ │ │ └── otherControllers.js
│ │ ├── 指令
│ │ │ └── accountDirectives.js
│ │ │ └── otherDirectives.js
│ │ ├── 过滤器
│ │ │ └── accountFilters.js
│ │ │ └── otherFilters.js
│ │ └── 服务
│ │ └── accountServices.js
│ │ └── otherServices.js

不要只使用常规的 AngularJS 模板,而是使用 Django 驱动的 AngularJS 模板,这样您就可以在渲染 Angular 模板时传递很酷的东西,例如 django-crispy-forms 或使用 django 渲染整个应用程序视图,然后只使用 Angular 修改它们。

任何角度应用程序(例如帐户应用程序或其他应用程序)中的部分 Django-controllers 目录:

│ ├── 部分
│ │ ├── __init__.py
│ │ ├── urls.py
│ │ ├── views.py

网址.py

urlpatterns = patterns('users.partials.views',
    url(r'^list/$', UserPartialListView.as_view(), name="list"),
    url(r'^detail/$', UserPartialDetailView.as_view(), name="detail"),
    )

视图.py

# 可以在这里传递任何全局上下文或方法
从 app_base.views 导入 PartialView

# 在此处传递应用程序全局上下文或方法
类用户部分视图(部分视图):
    template_name = "用户/部分/base.html"

# 在此处查看特定的上下文或方法
类用户部分列表视图(用户部分视图):
    template_name = "用户/部分/list.html"

# 在此处查看特定的上下文或方法
类 UserPartialDetailView(UserPartialView):
    template_name = "用户/部分/detail.html"

任何 Angular 应用程序(例如 Account App 或其他应用程序)中的 Partials Templates 目录:

│ ├── 模板
│ │ └── 账户
│ │ └── 部分
│ │ ├── base.html
│ │ ├── detail.html
│ │ └── list.html

主要部分 Django 路由器:

# myapp.partials.urls

urlpatterns = 模式('',
    url(r'^accounts/', 包括('accounts.partials.urls', namespace="accounts_partials")),
    url(r'^others/', 包括('others.partials.urls', namespace="others_partials")),
    )

完整示例目录结构:

├── 账户
│ ├── __init__.py
│ ├── forms.py
│ ├── 管理
│ │ ├── __init__.py
│ │ └── 命令
│ │ ├── __init__.py
│ │ ├── importbusinesses.py
│ ├── models.py
│ ├── 部分
│ │ ├── __init__.py
│ │ ├── urls.py
│ │ ├── views.py
│ ├── 权限.py
│ ├── serializers.py
│ ├── 静态
│ │ └── 应用
│ │ └── js
│ │ ├── 应用程序
│ │ │ └── accountApp.js
│ │ ├── 控制器
│ │ │ └── accountControllers.js
│ │ ├── 指令
│ │ │ └── accountDirectives.js
│ │ ├── 过滤器
│ │ │ └── accountFilters.js
│ │ └── 服务
│ │ └── accountServices.js
│ ├── 模板
│ │ └── 账户
│ │ └── 部分
│ │ ├── base.html
│ │ ├── detail.html
│ │ └── list.html
│ ├── urls.py
│ ├── views.py
├── api_root
│ ├── __init__.py
│ ├── admin.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── app_base
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── forms.py
│ ├── models.py
│ ├── models.pyc
│ ├── 静态
│ │ ├── 执照
│ │ ├── README.md
│ │ ├── 应用
│ │ │ ├── css
│ │ │ │ └── app.css
│ │ │ ├── img
│ │ │ ├── js
│ │ │ │ ├── app.js
│ │ │ │ ├── 应用程序
│ │ │ │ │ └── accountApp.js
│ │ │ │ ├── 控制器
│ │ │ │ ├── controllers.js
│ │ │ │ ├── 指令
│ │ │ │ ├── directives.js
│ │ │ │ ├── 过滤器
│ │ │ │ ├── filters.js
│ │ │ │ ├── 服务
│ │ │ │ └── services.js
│ │ │ ├── 库
│ │ │ │ └── 角
│ │ │ │ ├── angular-animate.js
│ │ │ │ ├── angular-animate.min.js
│ │ │ │ ├── angular-animate.min.js.map
│ │ │ │ ├── angular-cookies.js
│ │ │ │ ├── angular-cookies.min.js
│ │ │ │ ├── angular-cookies.min.js.map
│ │ │ │ ├── angular-csp.css
│ │ │ │ ├── angular-loader.js
│ │ │ │ ├── angular-loader.min.js
│ │ │ │ ├── angular-loader.min.js.map
│ │ │ │ ├── angular-resource.js
│ │ │ │ ├── angular-resource.min.js
│ │ │ │ ├── angular-resource.min.js.map
│ │ │ │ ├── angular-route.js
│ │ │ │ ├── angular-route.min.js
│ │ │ │ ├── angular-route.min.js.map
│ │ │ │ ├── angular-sanitize.js
│ │ │ │ ├── angular-sanitize.min.js
│ │ │ │ ├── angular-sanitize.min.js.map
│ │ │ │ ├── angular-scenario.js
│ │ │ │ ├── angular-touch.js
│ │ │ │ ├── angular-touch.min.js
│ │ │ │ ├── angular-touch.min.js.map
│ │ │ │ ├── angular.js
│ │ │ │ ├── angular.min.js
│ │ │ │ ├── angular.min.js.gzip
│ │ │ │ ├── angular.min.js.map
│ │ │ │ ├── errors.json
│ │ │ │ ├── i18n
│ │ │ │ │ ├── ...
│ │ │ │ ├── version.json
│ │ │ │ └── version.txt
│ │ │ └── 部分
│ │ │ ├── partial1.html
│ │ │ └── partial2.html
│ │ ├── 配置
│ │ │ ├── karma.conf.js
│ │ │ └── protractor-conf.js
│ │ ├── 原木
│ │ ├── package.json
│ │ ├── 脚本
│ │ │ ├── e2e-test.bat
│ │ │ ├── e2e-test.sh
│ │ │ ├── test-all.sh
│ │ │ ├── test.bat
│ │ │ ├── test.sh
│ │ │ ├── update-angular.sh
│ │ │ ├── watchr.rb
│ │ │ └── web-server.js
│ │ └── 测试
│ │ ├── e2e
│ │ │ └── 场景.js
│ │ ├── 库
│ │ │ └── 角
│ │ │ ├── angular-mocks.js
│ │ │ └── version.txt
│ │ └── 单位
│ │ ├── controllersSpec.js
│ │ ├── directivesSpec.js
│ │ ├── filtersSpec.js
│ │ └── servicesSpec.js
│ ├── 模板
│ │ └── app_base
│ │ ├── base.html
│ │ └── index.html
│ ├── urls.py
│ ├── views.py
于 2014-03-05T21:30:04.807 回答
7

如果您使用两个不同的域。这是我如何做的一个 git 种子。随意使用它。

Angular/Django 种子

.
├── app/
│   ├── shared/   // acts as reusable components or partials of our site
│   │   ├── sidebar/
│   │   │   ├── sidebarDirective.js
│   │   │   └── sidebarView.html
│   │   └── article/
│   │       ├── articleDirective.js
│   │       └── articleView.html
│   ├── components/   // each component is treated as a mini Angular app
│   │   ├── home/
│   │   │   ├── homeController.js
│   │   │   ├── homeService.js
│   │   │   └── homeView.html
│   │   └── blog/
│   │       ├── blogController.js
│   │       ├── blogService.js
│   │       └── blogView.html
│   ├── app.module.js
│   └── app.routes.js
├── assets/
│   ├── img/      // Images and icons for your app
│   ├── css/      // All styles and style related files (SCSS or LESS files)
│   ├── js/       // JavaScript files written for your app that are not for angular
│   └── libs/     // Third party libraries such as jQuery, Moment, Underscore, etc.
└── index.html
于 2013-10-24T22:33:39.700 回答