Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Django + Angular JS - не работает роутинг


Автор: mdlv 16.5.2016, 11:09
Задача: реализовать роутинг на стороне ангуляра, на стороне 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.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)