DjangoモデルからJavaScriptオブジェクトを生成する
-
03-07-2019 - |
質問
ブラウザでJavaScriptの多くの作業を行っていますが、フロントエンドでそのバックエンド機能の一部を使用したいと考えています。具体的には、関数 get()
、 save()
、 all()
および count()
はクライアントで使用できます。さらに、生成されたJavaScriptオブジェクトでモデルのフィールドリストを既に利用できるようにしておくと便利です。
現在のユーザーがレコードを読み書きできるかどうかは、Djangoの認証を使用して対処する別の問題です。とりあえず、検索が開始されます。
要するに、DjangoモデルからJavaScriptモデルを生成するコードはありますか?
ありがとう。
解決
モデルおよびクエリセットAPIへの完全なJavaScriptインターフェイスを探しているようです。これがこれまでに行われたことや、単純な作業であるとは想像もできません。モデルのJavaScriptインスタンスを何らかの方法で生成する必要があるだけでなく(メソッドも必要なため、JSONシリアル化よりもはるかに多く)、あらゆる種類のDB-API呼び出しを処理できるWebサービスを公開する必要があります。どこから始めるべきか想像することすらできず、セキュリティの問題が多すぎて簡単に克服できないかもしれません。
別の(そしてもっと簡単な)アプローチは、さまざまなDjango RESTモジュールとJSONシリアル化のいずれかを使用することです。リソースに対してAJAX GETリクエストを実行できます。これは、一連のクエリパラメーターによって識別でき、チェーン化されたクエリセットフィルターに相当します。これは、モデルの値のJSON表現を返します。その後、JavaScriptオブジェクトを変更し、オーバーロードされたAJAX POST要求を使用して、変更をサーバーに永続化できます。モデルのメソッドにアクセスできないため、機能を再実装する必要がありますが、モデルに変更を加えるのは簡単です-これは基本的に、HTMLフォームを使用してデータを変更するのと同等のJavaScriptです。
他のヒント
データシリアライザーが必要です。シリアライザーに組み込まれたdjangoでそれを行うことができます。公式のdjangoサイトで文書化されています。 djangoproject_topics-serialization
私はあなたが探しているものを正確に行うと思うプロジェクトを始めました。あなたはそれを見つけることができます
github_bumby_jslib 。
現在はget()のみがサポートされていますが、すぐにこれを拡張したいと考えています。パッチを提供してください:)
jslibは、DjangoプロジェクトとのAJAX統合を簡素化することを目的としたDjangoアプリケーションです。
だから、私が最初の質問を投稿してからしばらくして、それ以来、ジャンゴランドで多くの開発が行われています。とりわけDjango REST Frameworkと呼ばれるすばらしい小さなライブラリです。私は新しいプロジェクトでそれを使用する予定で、かなり見た目が良いようです。