这就是我的处理方法。其他人主张将您的 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