2017-08-08 19 views
1

モバイルアプリケーションを使用してウェブサイトを作成しようとしています。私はWebアプリケーションとREST APIを別々に扱っていましたが、このプロジェクトでは両方を結合する必要がありました。django webapp + REST APIエンドポイントを作成

私の質問は、どのように私はプロジェクトのこの2つの側面を組み合わせる必要があります。

私はUserモデルのTaskを持っています。現在私は、例えばmyRESTappと呼ばれるこれらのモデルをアプリ内に持っています。しかし今、私はタスクを編集してDjangoフォームを利用できるようにしたいが、webappという別のアプリケーションを実行してmyRESTapiにあるモデルに基づいてフォームを実装するわけではありません。私はアプリケーションのモジュール性を考慮すると良い習慣ではないと思います。

答えて

2

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ではないもの)に近づける方法です。

+0

DRFとDjangoを別々に使用しました。今私が望むのは、プロジェクトの下で参加することです(例えば、スマートフォン「/ users/me」からはユーザーデータを取得するが、Webページから行うこともできます)。私がwebappを作成したときに、 '{{form}}'タグを使ってページ上のフォームを自動的にレンダリングしました。同じアプリケーション内でRESTパーツとWebパーツを組み合わせるのはいいとは思えませんが、例えば 'core'、' api'と 'webapp'に分けると、それらの間に依存関係が生成されます。助言がありますか? – nikolat328

+0

@ nikolat328申し訳ありませんが、アプリケーションを混在させることはお勧めできません。 core、api、webappに分割します。私は自分の答えを更新し、同様のプロジェクトに使用したいサンプルプロジェクト構造を含めました。 – masterfloda

関連する問題