1つのDjangoプロジェクトに複数のアプリケーションを置くことができます。私は通常、主要なモデルを含む1つのメインアプリケーションとそれに追加のアプリケーションを構築しています。
また、別のプロジェクトでアプリを使用したい場合は、reusableにして、それらを別々のリポジトリに入れてください(要件として追加してpipでインストールできます)。
REST APIについては、Django Rest Frameworkをご覧ください。完全なCRUD機能を提供し、シンプルなWeb UIでデータを追加/変更することもできます。
私は私のプロジェクトの1を構造化する方法の例:
base # basic application
├── __init__.py
├── admin
│ ├── __init__.py
├── ├── filters.py # custom filters for the Django Admin
│ └── models.py # enhancements for the Django Admin
├── apps.py
├── db_router.py # database router to distinguish between default and legacy DB
├── migrations # DB migrations (default & legacy)
├── models
│ ├── __init__.py
│ └── default.py # default models
│ └── legacy.py # legacy models
├── services
│ ├── __init__.py
│ ├── service1.py
│ ├── service2.py
├── tests.py
manage.py
my_api_app
├── __init__.py
├── apps.py
├── serializers.py # DRF Serializers
├── services.py # specific services for this app
├── tests.py
├── urls.py # API URLs
├── views.py # DRF ViewSets
my_web_app
├── __init__.py
├── apps.py
├── services.py # specific services for this app
├── static
├── ├── css
├── ├── img
├── ├── js
├── templates
├── tests.py
├── urls.py # website URLs
├── views.py # web views
projectname
├── __init__.py
├── settings
├── ├── __init__.py
│ ├── base.py # base settings for all environments
│ ├── dev.py # local dev settings (DEBUG, etc)
│ ├── prod.py # production settings (default)
│ └── test.py # test settings (sqlite DBs for testing)
├── urls.py # urlpatterns (API, website & admin)
├── wsgi.py
requirements
├── base.txt # requirements for all environments
├── dev.txt # local dev requirements
├── optional.txt # optional requirements for HTML doc creation
├── prod.txt # production requirements
└── test.txt # test env requirements
requirements.txt # default requirements (prod)
scripts
├── post-merge.sh # githook for deployment on server
├── doc.sh # create the code doc
├── coverage.sh # create the code doc
だから私は私の基本他のアプリの両方で使われているモデルとすべてが含まアプリ、およびAPIのためのアプリを持っているし、 1つはウェブサイト用です
私はPHPとSymfonyから来ています。私は本当に再利用可能なサービスという考えに惚れていました。それが私の見解からロジックを消して、実際のMVC(Djangoではないもの)に近づける方法です。
DRFとDjangoを別々に使用しました。今私が望むのは、プロジェクトの下で参加することです(例えば、スマートフォン「/ users/me」からはユーザーデータを取得するが、Webページから行うこともできます)。私がwebappを作成したときに、 '{{form}}'タグを使ってページ上のフォームを自動的にレンダリングしました。同じアプリケーション内でRESTパーツとWebパーツを組み合わせるのはいいとは思えませんが、例えば 'core'、' api'と 'webapp'に分けると、それらの間に依存関係が生成されます。助言がありますか? – nikolat328
@ nikolat328申し訳ありませんが、アプリケーションを混在させることはお勧めできません。 core、api、webappに分割します。私は自分の答えを更新し、同様のプロジェクトに使用したいサンプルプロジェクト構造を含めました。 – masterfloda