От известно време изучавам Django и намерих това изображение полезно:
Сега се занимавам с Angular JS и се опитвам да разбера как всеки от компонентите (Директиви, Контролери и Услуги?) Взаимодейства и дали има подобен "цикъл". Това блог прилича на отговор на въпроса ми.
Но как е различна картината, ако имаме крайна точка на Django-Rest-Framework, която предоставя книгите в горния пример?
Искаме ли URL резолюция от Django или Angular? Или повече отговорно, което има прецедент?
Какъв е общия ред, в който се случват нещата, когато отидем да кажем localhost:8000/books
?
Прави
urls.py
хвана това?urls(r"^books",angular_redirect)
Ако е така, какво трябва да изпълнява тази функция (angular_redirect), за да получи ъгловата реакция?
Това ли е ъглово маршрутизиране?
$routeProvider.when("/books", {templateUrl: "partials/book_partial.html", controller: "MyBookCtrl"});
Това означава ли, че моят контролер регистрира услуга, закачена да каже
localhost:8000:/book_list.json
и трябва да се регистрира вurls.py
?
Как Angular знае къде да получи JSON за DRF, ако изцяло разчитаме на ъглови за маршрутизация. това пакет, който ви позволява да използвате django моделите в ъгловата JS, но не съм сигурен дали това прави картината повече или по-малко сложна.
Извинения, ако това е прекалено широко, аз съм много нови се опитвам да оглавя някои от общите концепции на тези технологии. Всеки съвет за стесняване на този въпрос, така че той да бъде отговорен, ще бъде оценен.
Отговори:
1 за отговор № 1Въпросът ви има прост отговор: Angular обработва предния край и Django (и DRF) обработват задния край и това включва URL адреси. Потребителите на напълно захранван сайт с ъглови ъгли никога не трябва да влизат директно в URL адрес, който се обслужва от Django, освен за началната страница, която обслужва структурата на страницата и самата JS.
Освен това, единственото взаимодействие междудве е, когато Angular специално иска JSON от Django, чрез Ajax повикване. Това може да е във връзка с навигационното събитие от потребителя, но също толкова равностойно може да бъде задействано във времето или чрез някаква функционалност на websocket.