1

私はDjangoを使ってWebアプリケーションを構築していますが、これはAPIサーバーとしての役割しか果たしていません。私はそれに接続する単一ページのアプリケーションとAndroidクライアントを持っています。私は、入ってくる着信POST要求のいくつかを修正する必要があります。Django Rest Framework着信要求を変更するには?

私の2つの使用例:

  • 登録プロセス中に、ユーザは、私のことができるようにすべきである(画像へのURLである簡単なテキストフィールドである)アップロードするアバター画像を選択しない場合デフォルトのアバターURLを挿入します。そうですね、if request.data["avatar"] is None: <use default>
  • Androidクライアントからの「タイムスタンプ」の着信要求は、すべてUNIXのタイムスタンプです。これをDjangoのdatetimeに変換したいと思います。現在のリクエストはdate_time = 1473387225で、DateTimeオブジェクトに変換したいと思います。

私は既に、特定のPOSTパラメータで同様のことをやっています。私が今やっているのは、今すぐListCreateApiViewという汎用のpost()の機能にあります。要求オブジェクトを直接変更して、その新しい要求オブジェクトでself.create()を呼び出します。これは正しい方法ですか、それとももっと良い方法ですか?

ありがとうございます!

答えて

0

django-rest-frameworkを使用している場合、これらの作業はserializersで行うことができます。 avatarの場合は、デフォルト値のURLFieldを使用してください。 タイムスタンプの場合は、おそらくcustom fieldを作成する必要があります。

0

このサイトをチェックアウト:http://www.cdrf.coこれは、特定のクラスで利用可能なすべてのメソッドを簡単にナビゲートすることができます。これを使用して、使用しているビューを上書きすることができます。モデルのViewSetの場合は、perform_createperform_updateが必要です。

私は頻繁にこのような何か:

class SomeViewSet(viewsets.ModelViewSet): 
    queryset = SomeModel.objects.all() 
    serializer_class = SomeModelSerializer 

    def perform_create(self, serializer): 
     data = self.request.data 

     # make some changes to self.request here 

     serializer.save(
       #change some things here 
       field='some new value' 
      ) 
関連する問題