2013-12-04 1 views
3

Я настраиваю простой веб-сайт, и я хотел интегрировать angularjs для пользовательского интерфейса. Однако, похоже, CMS берет на себя все и обслуживает все, в том числе все, что я хочу получить через angularjs.Использовать мезонин вместе с angularjs

Мой urls.py файл:

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), 
    (r'^users/', include('apps.site_users.urls')), 
    url('^$', 'mezzanine.pages.views.page', {'slug': '/'}, name='home'), 
    url('', include('social.apps.django_app.urls', namespace='social')), 
    ('^', include('mezzanine.urls')), 
) 

У меня есть все необходимые изменения для angularjs, чтобы работать, так как без CMS, все нагрузки просто отлично, но это означает, что я не могу обслуживать другие страницы I иметь в CMS. Любые идеи о том, что нужно сделать?

ответ

1

Вы можете легко настроить Мезонин для работы с Угловым в HTML5 Mode по настройке маршрутизации вашего приложения на Угловом и ваши базовые адреса через Django, убедившись, что любая перехватываются схема URL перенаправляет на «домашнем» URL:

On Джанго:

# urls.py 
urlpatterns = patterns("", 
    # Change the admin prefix here to use an alternate URL for the 
    # admin interface, which would be marginally more secure. 
    ("^admin/", include(admin.site.urls)), 

    # If you'd like more granular control over the patterns in 
    # ``mezzanine.urls``, go right ahead and take the parts you want 
    # from it, and use them directly below instead of using 
    # ``mezzanine.urls``. 
    ("^", include("mezzanine.urls")), 

    # AngularJS HTML5 mode (ie, remove the /#/ from URLs): 
    # We need to redirect any uncaught URL schemes to the default home view. 
    # http://scotch.io/quick-tips/js/angular/pretty-urls-in-angularjs-removing-the-hashtag 
    url(r'^.*$', TemplateView.as_view(template_name='index.html'), name='home'), 

    # etc... 
) 

На Угловая:

// app.js 
app.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/', { 
     templateUrl: '/static/app/views/home.html', 
    }) 
    .when('/profile/:profileId', { 
     templateUrl: '/static/app/views/profile.html', 
     controller: 'ProfileCtrl' 
    }) 
    .when('/results', { 
     templateUrl: '/static/app/views/results.html', 
     controller: 'ResultsCtrl' 
    }) 
    .otherwise({ 
     redirectTo: '/' 
    }); 

    $locationProvider.html5Mode(true); 
    }); 
}); 

На HTML:

<!-- index.html --> 
<!doctype html> 
<html class="no-js" lang="es" ng-app="myApp"> 
    <head> 
    <base href="/"> 
    <!-- etc --> 
    </head> 
    <!-- etc --> 
</html> 

Связанные записи в блоге here.

+0

Awesome! Я давно отказался от этого, но я дам ему попробовать –

+0

@StephenM Это сработало? Если это так, вы можете принять это как ответ. –

+0

@nueverest Я забыл обновить это здесь ... спасибо –