2017-07-26 2 views
0

私はdjangoを使ってWebサイトを開発していますが、私はどのようにプロジェクトを構築すべきか分かりません。DjangoプロジェクトのURLとファイル構成

のは、私のプロジェクトツリーがあるとしましょう:

main 
    ├───_main 
    | ├── __init__.py 
    | ├── settings.py 
    | ├── urls.py 
    | └── wsgi.py 
    ├───_accounts 
    | ├── models.py 
    | ├── forms.py 
    | ├── urls.py 
    | ├── views.py 
    | └── ... 
    └───_website 
     ├──_static 
     | └──_website 
     |  ├── css (...) 
     |  └── js (...) 
     ├──_templates 
     | └──_website 
     |  └── (html files...) 
     ├── urls.py 
     ├── views.py 
     └── ... 

私は私のプロジェクトに2つのアプリケーション(「アカウント」と「ウェブサイト」)を持っている「メイン」。 「アカウント」アプリは、ユーザーモデルと認証プロセスを実装します。 「ウェブサイト」アプリは、ホームページなどの非モデル関連のものを制御します。もちろん、もっと多くのアプリがあります...

この時点で、すべてのWebファイル(html、css、js ...)は「ウェブサイト」(静的/テンプレートフォルダ)、およびウェブサイト/ URL .pyはすべてのURLを処理します。

# website/urls.py 
from django.conf.urls import url, include 
from .views import index 
from accounts.views import LoginView, LogoutView, RegisterView 

urlpatterns = [ 
    url(r'^$', index, name="index"), 

    # Accounts 
    url(r'^login/', LoginView.as_view(), name="login"), 
    url(r'^logout/', LogoutView.as_view(), name="logout"), 
    url(r'^register/', RegisterView.as_view(), name="register"), 
] 

それは、ログインフォームのように、そのユーザーに関連するWebファイル私には理にかなって、フォームを登録するなど、「アカウントの内部の静的およびテンプレートのディレクトリに格納する必要があり、そしてURLは「/ログイン」のような(取り扱い、 '/ logout'、 '/ register' ...)はaccounts/urls.pyで管理する必要があります。それが正しいか?もしそうなら、どうしたらいいですか?

私の心に入ってくるだけの事は(テストしていません)メイン/ urls.py内のすべてのアプリからurls.pyファイルごとに含めることです。

# main/urls.py 
from django.conf.urls import url, include 
from django.contrib import admin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^', include('website.urls', namespace="website")), 
    url(r'^', include('accounts.urls', namespace="accounts")), 
] 

をしかし、それは奇妙なようだ...何正しい方法ですか?

+0

でなければならないと考えてテンプレートフォルダをすべてのアプリケーションフォルダに入れます。 – Vaibhav

+0

今のところ私は 'main/urls.py'ソリューションに切り替えました。それは正常に動作し、今私はアプリケーションの名前空間を使用することができます。私は 'account'に 'static'と 'templates'フォルダを作成し、アカウント関連のファイル(htmlフォーム...)の中にコピーしました。私はそれがアプリ全体をより多くのポータブルにすると思う。しかし、わかりやすくするために、私は 'ウェブサイト'アプリでhtmlsの作業を続けます。私はそれが良い練習であるかどうかはわかりません。 – sysseon

+0

あなたはアプリケーションに基づいてファイルを置くことができますが、Appsは独自のテンプレート/静的/ URLファイルを持ちます。移植性はありますが、ほとんどの場合は必要ありません。別のAppに異なるURLのファイル – Vaibhav

答えて

0

私はアプリは、あなたが静的を作成する必要が増加したときに、他の特定のアプリ関連ファイルを置くために、アプリのフォルダを作成しますが、メインのメインプロジェクトディレクトリ内に、これらのフォルダ内の静的およびテンプレートフォルダを置くことができ、それは

main 
    ├───_main 
    | ├── __init__.py 
    | ├── settings.py 
    | ├── urls.py 
    | └── wsgi.py 
    ├───_accounts 
    | ├── models.py 
    | ├── forms.py 
    | ├── urls.py 
    | ├── views.py 
    | └── ... 
    | 
template- 
    | 
static 
    └── 
     ├── css 
     ├── js 
     └── ... 
+0

私はDjangoアプリは移植可能ではありますが。だから、私は 'ウェブサイト'アプリを持っているので、ウェブフロントエンドのファイルはその内部にあるべきではありませんか? – sysseon

+0

それはマスターではなく、必要なアプリケーションに依存します。 – Viktor

関連する問題