Javascript-форум (https://javascript.ru/forum/)
-   Angular.js (https://javascript.ru/forum/angular/)
-   -   Django + Angular JS - не работает роутинг (https://javascript.ru/forum/angular/63075-django-angular-js-ne-rabotaet-routing.html)

mdlv 16.05.2016 11:07

Django + Angular JS - не работает роутинг
 
Задача: реализовать роутинг на стороне ангуляра, на стороне 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.


Часовой пояс GMT +3, время: 07:50.