I would like to use AngularJS in my next project. The application with Python backend and html5, Angular frontend.
I am going to use MVC framework on backend and I am li
You can choose to do either client-side routing, server-side routing or a combination of both...
In case of client-side routing, you would have a single page served by the server. All routing after that would be done by the client. If you have an application with a lot of pages, this might not be the optimal solution and you might want to do server-side routing.
In case of server-side routing, you would serve a page for every route defined on the server application. Each of them would contain a mini-angularJS application (furthermore, each of these mini-SPAs could do some additional routing if that makes sense)
It's up to you to decide what works best for your case.
Definitely check out UI-router from the AngularUI project if you are planning to do client-side routing. It gives you the ability to create state-based views and some other things that were not possible with Angular's native routing.
You can use client-side routing and let the backend return static files and JSON data. The routing in Angular basically tell you which partial template you need to download from server and which controller will handler it.
Your back end routes will be like this
'/partials/:name' -> return corresponding partial
'/api/*' -> handlers to return json data
'/*' -> return index.html
Your index.html will contain reference to other views
...
<div ng-view></div>
...
Now let say you go to yourapp.com/someview.html. The server returns index.html and since the url is /someview, Angular will ask for "someview" partial from server and render the page accordingly.
In short, the server role is to return index.html, partials and serve REST API request. The client always receive index.html and based on the url, request for coressponding partials and JSON data.