0

角型アプリケーションをバンドルし、Django Rest Framework DRFアプリケーションで静的コンテンツとしてデプロイしようとしています。Django Restフレームワーク埋め込み角型アプリケーション用のルーティング

私はしかし、私はこのような何かを表現するために、ルーティングの制御をしたいすべてでDjangoのかDRFを知らない

/管理/ *の場合 - 組み込みのDjangoの管理者に委任します。

/API/*について - Djangoの残りのフレームワーク

に委任するために/だけ、および/ * - "いくつかの指定されたプロジェクトフォルダ" からロードなどの静的コンテンツを扱うので、 /マップは./static/ファイルにindex.html /assets/pic.jpgは./static/assets/pic.jpgにマップします

私は上記を達成できませんでした。私が持っているのは

です。./templates/index.htmlにあるindex.htmlのテンプレートビュー - これはAngularプロジェクトのものであり、Djangoテンプレートではありません。手動でコピー

その他のWebPACKバンドルされたコンテンツは、ベンダーなど./staticする|。ハッシュは|もう一つの問題は、資産をどうするかである

.bundle.js。

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

[展開を:私は、このコマンドラインを使用してパスをある程度制御を得ている

index.htmlのような角度のプロジェクトでは、HTMLビューには、同じレベルにある/資産を経由して資産を参照してください。 url argはindex.htmlのバンドルされたアセットの参照先に/ staticというプレフィックスを付けます。これは、Djangoがそれらを提供できることを意味します(ただし何らかの理由で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/' 

これらは静的な設定です。私が必要とするのは、 "/静的"と "/ assets"がともに静的資産フォルダであると言うことです。

TemplateViewが(urlPatterns)であるかわかりません。たぶんStaticFilesViewなんか、URLをディスク上のパスにマッピングするものがあるのでしょうか?

答えて

1

blockquote これらは静的な設定です。私が必要とするのは、 "/静的"と "/ assets"がともに静的資産フォルダであると言うことです。 BLOCKQUOTE

あなたは、次の手順であることを達成することができます:あなたのDjangoの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; 
    } 
    .... 
    .... 
} 
    1. はnginxのサイト構成ファイルに/資産静的なディレクトリを追加します。PY追加:

      それだ
      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'), 
        ) 
    
  • 関連する問題