web-dev-qa-db-ja.com

Django-フロントエンドからの分離(テンプレート)

要するに、ユーザーが中古車を販売できるようにするWebページを作成したいとします。

私はwebdevの初心者なので、無知です。楽しい事実:2か月前、私は文字通り何も知りませんでした。HTMLを90年代の遺物と見なし、もう使用されていませんLOL。

  • バックエンドとフロントエンドに何かが必要だと言われました
  • 私が知っているようにpythonはかなりよくバックエンドにDjangoを選びました
  • フロントエンドについて文字通り何も知らなかったので、私の友人がAngularJSを提案してくれました

私が正しい方向に進んでいるのかどうか、いくつか疑問があります。

Djangoはバックエンドフレームワークですが、チュートリアル中の私の感じでは、MVTパターンのテンプレート部分はフロントエンドであり、モデルとビューに強く依存していました。私はさまざまな用語の検索に何時間も費やし、この投稿を reddit/Django-Djangoベストプラクティス に見つけました。

フロントエンドを別のアプリケーションのように扱います。 Djangoプロジェクトディレクトリの外に置いてください。

このアプローチでは(私があなたを理解していることを確認するためだけに)、テンプレートをまったく使用していませんね?」

あなたは正しいです。テンプレートをまったく使用しません。

それ、どうやったら出来るの?つまり、テンプレートはこれらすべてのテンプレートタグを使用します。DjangoテンプレートをAngularコードに置き換えるにはどうすればよいですか?いくつかのREST AP​​I(どのようにDjango RESTフレームワーク?)を使用してフロントエンドとバックエンドを通信する必要があるように感じます。モデルとビューのみを記述し、POSTおよびGETリクエストを使用してそれらに接続します。お気に入り

フロントエンド<---> REST AP​​I <---> Djangoモデルとビュー<--->データベース

次に、フロントエンドは独自のロジックを使用して、次のようなリクエストを送信します

  • ユーザーが投稿したすべての車を入手してください
  • ユーザーの詳細を取得
  • POST新しいユーザーを作成する
  • 車に変更をポストする
  • すべての赤い車のGETクエリ

等.

次に、フロントエンドに関する別の質問。私はAngularを倒したのは良い選択ではありません。その目的は、単一ページアプリを作成することです。ユーザーが特定の車の基準を照会し、すべてのオファーを別々のタブで開くことを想像できます。ユースケースにAngularを使用することは可能ですか?私はここで迷っています:(

Django Teplatesを使用する場合、AJAXを使用するにはどうすればよいですか?また、シングルページアプリとマルチページアプリのハイブリッドを作成する方法はありますか?通常、複数のテンプレートに従いますが、それらの一部をSPAのように保ちますか?例えば。閲覧する車のクエリに使用されるメインテンプレート。ページの再読み込みはトリガーされず、非同期リクエストが送信され、スピナーが表示され、利用可能な車のリストがレンダリングされます。特定の車をクリックすると、その車の詳細(詳細テンプレート)が表示された新しいタブが開きます。

このフロントエンドとバックエンドの分離について、何か助けていただければ幸いです。

2
Fidd

そのため、アプリケーションのさまざまな状態(ランディングページ、車のリスト、1台の車の詳細、フォームと価格のセットを含む手順など)を実際に車を購入する際に示す必要があります。

2つの基本的なアプローチがあります。単一の「ページ」、または常にページを更新して表示する必要があるさまざまなものを表示するJavascriptのロードを含む単一のHTMLファイルを使用する方法、またはサーバー側で、URLへのリンクを使用して、ブラウザを各ページに移動します。

最初のものを選択する場合は、AngularまたはReactなどのフロントエンドフレームワークを使用し、Djangoにデータのみを要求します。通常、JSONはRESTを使用します(Django RESTフレームワークを参照)。 2つ目は、Djangoテンプレートを使用することです。

これが基本的な選択です。Webブラウザーでインターフェースを作成してサーバーにデータを呼び出すだけですか、それともサーバーにインターフェースを作成してサーバーにHTMLページを呼び出すだけですか。

あなたの経験レベルでは、Djangoテンプレートを使用してHTMLページを作成する方が簡単だと思います。単一ページのアプリを作成すると、おそらく、学習する必要のあるものが2倍以上になり、すでにたくさんあります。中古車を販売するWebページは、Djangoビューとテンプレートを使用して完全に作成できます。

必要に応じてJavascriptを引き続き使用し、AjaxにJSONのビットを返すDjangoビューを呼び出させることができます。おそらくDjango RESTフレームワークを使用します。

4
RemcoGerlich