IT박스

Django에서 AngularJS를 사용하는 모범 사례는 무엇입니까?

itboxs 2020. 12. 2. 08:14
반응형

Django에서 AngularJS를 사용하는 모범 사례는 무엇입니까?


클라이언트 측은 AngularJS , 서버 측은 Django 로 프로젝트를 시작하려고 합니다.

가장 친한 친구처럼 작동하도록 만드는 모범 사례 (정적 파일, 인증, 배포 등)는 무엇입니까?


흥미로운 최적화를 위해 Django 템플릿에서 클라이언트 측 템플릿을 강화하는 방법이 있습니다. 그러나 Django와 AngularJS의 템플릿 언어 간의 유사점을 고려할 때 여기서는 노력할 가치가 거의 없습니다. 이러한 종류의 대부분의 프로젝트에 대해 AngularJS의 정적 서비스를 Django REST 프레임 워크 와 페어링 합니다.

urls.py작업 순서는 거의 항상 Django REST Framework URL이 먼저 (가능한 한 엄격하게 작성 됨)이고, 그 다음에 STATIC_ROOT는 로컬 테스트 / 개발 시나리오를 위해 디렉터리의 기본 AngularJS 애플리케이션 템플릿을 가리키는 일반 패턴이 뒤 따릅니다 .

if settings.DEBUG:
    urlpatterns += patterns('django.contrib.staticfiles.views',
        url(r'', 'serve', {
            'document_root': settings.STATIC_ROOT, 
            'path': '/base.html'}
        ),
    )

일치하지 않는 모든 요청을 동일한 앱 / 템플릿으로 지정하면 해시 태그보다 URL 및 라우팅의 히스토리 해킹 방법을 사용할 수 있습니다. 해시 태그 만 사용하려는 경우 최종 URL 일치가 더 엄격해질 수 있습니다 (예 : /(URL 루트) 를와 일치 r'^$').

프로덕션에서는 역방향 프록시 또는 nginx와 같은 느린 클라이언트 HTTP 서버를 사용하여 AngularJS (정적) 콘텐츠를 제공하고 REST 서비스에 대한 요청을 Django WSGI 앱에 프록시합니다.

Django REST 프레임 워크와 통신하기 위해 저는 AngularJS 앱과 Django REST 프레임 워크에서 데이터를 마샬링하는 클래스와 유사한 JS 객체를 선호합니다. 이를 위해 angular-django-rest-resource 를 사용하여 REST Framework 뷰에 노출하는 Django 모델 클래스를 나타내는 클래스를 생성합니다.

angular-django-rest-resource가 리소스에 대해 만들 수있는 쿼리의 유연성을 극대화 하기 위해 여기에 설명 된대로 REST 프레임 워크 용 django-filter 백엔드를 설치합니다 . 이렇게하면 JS 리소스가 매개 변수 (예 :)에 의해 제한되는 Django 객체를 요청할 수 있습니다 ./polls/?author=345&finished=1

AngularJS 기본 템플릿이 제공되는 서버와 별도의 서버 도메인에 Django 및 REST 작업을 배포하는 경우 (예 : HTML에 대해 다른 인터넷 도메인에서 타사 CDN을 사용하는 경우) 이러한 리소스에 대한 교차 도메인 요청을 허용하는 것이 중요합니다. 이를 위해 django-cors-headers 미들웨어를 권장합니다 .

도움이 되었기를 바랍니다. 그것은 아니다 가장 좋은 방법 설정,하지만 나를 위해 일했다 하나입니다.


Angularjs와 Django의 혼합을 방지하려면 https://docs.angularjs.org/api/ng/provider/ $ interpolateProvider를 참조하십시오.

기본적으로 Django가 {{xyz}} 변수를 사용하고 angular가 {[{xyz}]} 변수를 함께 사용하도록하려면 :

app.config(function($interpolateProvider) {
    $interpolateProvider.startSymbol('{[{');
    $interpolateProvider.endSymbol('}]}');
});

참고 URL : https://stackoverflow.com/questions/18148909/what-are-the-best-practices-to-use-angularjs-with-django

반응형