Задача: реализовать роутинг на стороне ангуляра, на стороне Django REST - только работа с собственным api.
Возник вопрос, как скоординировать работу urls.py у Django и routerProvider у Angular? Сейчас отрабатывают только urls.py, роутинг не срабатывает. По / открывается index.html.
В основном index.hmtl подключаю angular-route.js и js для роутинга:
<script>
var app = angular.module('myApp', ['ngRouter']);
app.constant('DJANGO_SETTINGS', {
staticUrl: '{{ STATIC_URL }}',
mediaUrl: '{{ MEDIA_URL }}'
});
app.config(stateConfig);
stateConfig.$inject = ['$routerProvider', 'DJANGO_SETTINGS'];
function stateConfig($stateProvider, DJANGO_SETTINGS) {
$routeProvider
.when('/', {
controller: 'someController1',
templateUrl: DJANGO_SETTINGS.staticUrl + 'myapp/templates/template1.html'
}
.when('/page1/:id', {
controller: 'someController2',
templateUrl: DJANGO_SETTINGS.staticUrl + 'myapp/templates/template2.html'
}
};
</script>
Также подключаю js с контроллерами someController1 и someController2, которые должны посредством запроса к api заполнять соответствующие шаблоны.
В Django REST urls.py:
Код:
|
urlpatterns = patterns( '',
url(r'myapi/'), include('myapp.urls')),
url(r'$', HomePageView.as_view()),
) + static.static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
+ static.static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) |
HomePageView отдает index.html через TemplateView. Т.е. далее по идее должен срабатывать роутинг ангуляра.
В settings.py в TEMPLATE_CONTEXT_PROCESSORS добавил две записи:
Код:
|
'django.core.context_processors.media' и 'django.core.context_processors.static'. |
Переместил шаблоны template1.html и template2.html в /static/myapp/templates/, index.html лежит /myproject/templates.