25

ドキュメントを読んで Django フレームワークを勉強していますが、各アプリケーションに複数のアプリがある同じプロジェクトで複数のアプリケーションを作成する方法についての参照は見つかりませんでした。たとえば、アプリのユーザー、コメント、投稿などを含むアプリケーションのブログ、実装、およびアプリのクライアント、ユーザー、添付ファイルを含むタスク...どうすればよいですか?

localhost
localhost/blog/ (posts, user, comment, ...)
localhost/tasks/ (task, user, attachment, ...)

<my project>
-- manage.py
-- <project name>
-- -- blog
-- -- -- posts
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
-- -- tasks
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py
...
4

3 に答える 3

24

各アプリのフォルダーには次のものが含まれます。

  • ビュー.py
  • models.py
  • その他のオプション (admin.py...)

だから、あなたは持っています:

Project
-- manage.py
-- Project
-- -- views.py
-- -- models.py
-- -- others
-- -- APP1
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APP2
-- -- -- views.py
-- -- -- models.py
-- -- -- others
-- -- APPX
-- -- -- views.py
-- -- -- models.py
-- -- -- others

ユーティリティは機能の違いです (通知アプリと通知モデルがある場合は Notification.models.notification を呼び出します)。

モデルは、オブジェクトのアーキテクチャです。したがって、たとえば User.username または Task.name を呼び出します。Django はデータベースにテーブルを自動的に作成します。

Djangoの別のツール:管理ビュー(モデルを使用するオブジェクトを編集、作成、編集できる)を使用するか、このインターフェースを変更できます(そのページを見てください

必要に応じて、識別システムを作成し、フォームを作成して、独自の管理システムを使用できます。

あなたの例で:

<my project>
-- manage.py
-- <project name>
-- -- urls.py
-- -- models.py <--- User model exists in Django and here you can add informations to the defaut model it is in this file because I suppose it will be used in all your project.
-- -- views.py

-- -- blog    <--- It's an app.
-- -- -- -- views.py 
-- -- -- -- urls.py
-- -- -- -- models.py <--- Posts, Comments are models for the blog, so you explain them here.

-- -- tasks   <--- Another app.
-- -- -- attachments
-- -- -- -- views.py
-- -- -- -- urls.py
-- -- -- -- models.py  <--- Task model for exemple
于 2012-07-15T12:35:10.447 に答える
18

django について理解しておくべきこと:

  1. URL マップは、ファイル システムやアプリケーション コードには関係ありません。これは、URL がコードと 1 対 1 の関係にないことを意味します。同じコードを指す (同じビューを指す) 複数の URL を持つことができます。これは、たとえば、URL がファイル システムにマップされる PHP とは異なります。

  2. アプリケーションは「ウィジェット」や「ポートレット」ではありません。アプリケーションは、いくつかのファイルが既に含まれている単なる python モジュールです ( views.pymodels.pyおよび__init__.py)。必要な数のアプリを使用できます。URL を使用してアクセスできないアプリケーションを作成することもできます。これらのアプリケーションは、他のアプリケーションをサポートするためのものです。また、アプリケーションが URL と同じ名前である必要もありません。

そのことを念頭に置いて... 1 つのアプリケーションを作成し、それwwwを と呼び、その 内views.pyで、これらの非常に独創的な名前のメソッドを定義できます。

def blog(request):
   pass

def tasks(request):
   pass

urls.pyでは、次のものを使用できます。

url(r'^blog/$','www.views.blog',name='blog-index'),
url(r'^blog/posts/$','www.views.blog',name='blog-posts',kwargs={'view_posts': True}),
url(r'^tasks/$','www.views.tasks',name='task-index'),
url(r'^tasks/attachments/$','www.views.tasks',name='task-attachments'),
于 2012-07-15T09:16:11.140 に答える
4

アプリとは何かについて混乱しています。アプリは、関連する機能の単なるコレクションであり、通常 (必ずしもそうとは限りません)、モデル、ビュー、およびテンプレートが含まれます。

「ユーザー」はアプリではなく、モデルですが、通常は組み込みの django.contrib.auth アプリを使用してユーザー機能を提供します。どのアプリでも、モデルを含め、他のアプリのコードを使用できます。また、1 つのアプリで好きなだけモデルを作成できます。

于 2012-07-15T02:57:22.190 に答える