2017-09-06 16 views
0

각도 어플리케이션을 번들로 묶고 Django Rest Framework DRF 어플리케이션에 정적 컨텐츠로 배치하려고합니다. 나는 모든하지만 장고 또는 DRF를 모르는Django Rest 프레임 워크 임베디드 각도 어플리케이션을위한 라우팅

, 나는 이런 식으로 뭔가 표현하기 위해 라우팅 제어 할 원하는 관계 :

을/관리/* - 위임 내장 장고 관리자.

/API/* 들어 - 장고 나머지 프레임 워크

위임의 경우/단지, 및/* - "일부 지정된 프로젝트 폴더"에서로드와 같은 정적 컨텐츠를 취급하므로 /지도 ./static/ 파일에 index.html /assets/pic.jpg는 ./static/assets/pic.jpg에 매핑됩니다.

위 내용을 달성하지 못했습니다. 내가 가지고있는 것은 :

./templates/index.html에 살고있는 index.html의 템플릿 뷰. 이것은 Angular 프로젝트의 템플릿이며 Django 템플릿이 아닙니다. 수동으로 복사

다른 웹팩 번들 컨텐츠 공급 업체 등 ./static합니다. | 해시 | 또 다른 문제는 자산과 함께 할 것입니다

.bundle.js.

ng build --deploy-url=/static --output-path=../backend/tutorial/static 

deploy- : 각 프로젝트에서 HTML보기는 내가이 명령 줄을 사용하여 경로를 통해 몇 가지 컨트롤을 왔

index.html을 같은 수준 인 자산/자산를 통해 참조 url arg는 index.html에 번들 된 자산 참조가/static으로 접두사가 붙는 결과를 가져옵니다. 이는 장고가 제공 할 수 있음을 의미합니다 (그러나 어떤 이유로 든 favicon.ico가 아님).

출력 경로 arg는 기본 "dist"폴더가 아닌 다른 모든 자산을 덤프합니다.

urlpatterns = [ 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^api/', include(router.urls)), 
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), 
    url(r'^', TemplateView.as_view(template_name="index.html")), 
] 

URL 패턴은 위와 같습니다.

STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, "static") 
] 

STATIC_URL = '/static/' 

정적 설정입니다. 내가 필요로하는 것은 "/ 정적"과 "/ 자산"이 모두 정적 자산 폴더라고 말할 수 있어야합니다.

TemplateView가 (urlPatterns) 무엇인지 확실하지 않습니다. 어쩌면 StaticFilesView 또는 URL을 디스크의 경로에 매핑하는 것이 있습니까?

답변

1

인용구 : 다음은 정적 설정입니다. 내가 필요로하는 것은 "/ 정적"과 "/ 자산"이 모두 정적 자산 폴더라고 말할 수 있어야합니다. 인용문은

다음 단계로 그것을 얻을 수 있습니다 Nginx의 사이트 구성 파일에

  1. 추가/자산 정적 디렉토리 : 장고 URL을에서

    server { 
        .... 
        .... 
        # your Django project's static files - required 
        location /static { 
         alias /path/to.../static; 
        } 
        # your Angular project's static files 
        location /assets { 
         alias /path/to.../assets; 
        } 
        .... 
        .... 
    } 
    
  2. 합니다.평 추가 기능 : 그것은있어

    from django.views.static import serve as static_serve 
    
    urlpatterns = [ 
        .... 
        url(r'^assets/(?P<path>.*)$', static_serve,  
            {'document_root':'/path/to.../assets'}), 
        .... 
        .... 
    ] 
    

. Django 설정에서 정적 구성을 만질 필요는 없습니다.

STATIC_URL = '/static/' 
    MEDIA_URL = '/media/' 
    MEDIA_ROOT = os.path.join(DATA_DIR, 'media') 
    STATIC_ROOT = os.path.join(DATA_DIR, 'static') 

    STATICFILES_DIRS = (
     os.path.join(BASE_DIR, 'reservation_exchange', 'static'), 
    )