diadia

興味があることをやってみる。自分のメモを残しておきます。

DRF

drf エラーハンドリング

リソースに変更を加えるapiを作る際に、以下の要望があった。 apiを叩いたら成功したか失敗したかの結果をTrue, Falseで欲しい。この場合drfでResponseオブジェクトを返せば良い。 return Response({"success":True}) # または return Response({"success":F…

APIViewのpermission_classesはどんな仕組みで動いているのか

APIViewのプロパティは以下の通り。 # APIViewのプロパティ class APIView(View): # The following policies may be set at either globally, or per-view. renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES parser_classes = api_settings.DEFAUL…

APIViewのauthentication_classesとpermission_classesについて分かったところまで。。。

DRF

書きかけ。。。 APIViewのオリジナルコード django-rest-framework/views.py at master · encode/django-rest-framework · GitHub # APIViewのプロパティ class APIView(View): # The following policies may be set at either globally, or per-view. rende…

authtokenをrestframeworkだけで実装して観察してみる

昔Token認可で実装したことがあるけど、rest-authを使って実装したのでライブラリを使わないで試してみる。 ドキュメント https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication settings.py まず、Tokenで認可させたい場合…

cookieやlocalStorageを操作するには?

アンドロイドアプリを作る場合はアプリのストレージ領域に暗号化したTokenを保管し、通信を行うときだけそれを引っ張り出してリクエストヘッダにセットして通信を行っていた。クライアントがブラウザの場合にはブラウザに保存するのでどうやって保存して取り…

javascriptで画像アップロード

mpaのdjnagoで画像をアップロードするにはフロントエンドではhtmlにinputタグ(type="file")をセットして、何らかのボタンを押してpostメソッドで送信し、views.pyにてrequest.POSTのような形で画像データを取り出してやれば画像の取り扱いはできた。 しか…

djangoとvuejsをcdn以外の方法で共存させる

npmにvueを入れて構築する方法を試みる。djangoはdjango rest frameworkを使う。 今回気になる事項は、 どうやってdjangoとvueをcdn以外の方法で共存させる環境を構築するのか どういう仕組でdjangoとvueが連携する仕組みになっているのか vueを使うにあたり…

Django Test retrofitが送信するデータを再現する

内容 djangoの単体テストを実装する際にAndroid端末が送信するデータ形式を再現できなければ、単体テストの効果が得られない。 したがって最初にretrofitのpostメソッドの形式を確認し、それをそれぞれどのようにdjango(python)で再現すればよいかをメモして…

DRFとretrofitの関係(Bodyに関して)

話したいこと drfのrequest.dataの内容はfieldかbodyかで違いが出る話をしたい。 django rest frameworkを使ってアンドロイドからデータを受け取る場合にはrequest.dataを使う。そしてこのrequest.dataの内容がretrofitのインターフェースメソッドの記述の仕…

Djangoのテストを実装

分かったこと djangoでテストする項目がわかった。 どんな感じでdjangoのテストを書くのか分かった。 djangoのテストはどんな種類か フレームワークの種類によってTestが準備されていることが分かった 分かったことを軽くまとめる ふわっと理解する テストは…

効率よく開発を進めるために。DRFとAndroid(Kotlin)を前提に

どこに注意してコーディングをすすめるべきか。 一番重要な要素は、Androidアプリの各画面でどのような情報が必要か明らかにすることである。 Djangoにおいて必要な情報を制限なしに出力する事ができる。したがってKotlinがボトルネックとなる。そのためAndr…

djangoにRESTAPI(DRF)を実装する まとめ

内容 公式ドキュメント DRFの基本的な知識 DRFの関連記事 1. 公式ドキュメント 公式ドキュメント:Home - Django REST framework 2. DRFの基本的な知識 DRFはAPIを扱うフレームワーク djangoがwebフレームワークに対してdjango rest framework(DRF)はrestful…

DRFでGeneric ForeignKey を扱う

GenericForeignKeyの扱い方はDRFドキュメントにある Serializer relations - Django REST framework このドキュメントの解釈を行う。自分が作った例は時間があれば、Githubにあげておく。 class TaggedItem(models.Model): """ Tags arbitrary model instanc…

DRFでForeign Keyの値を参照するやり方

参考 Django REST Framework メモ ::ForeignKeyでつながっている別モデルをくっつけてひとつのJSONとしてWebAPI出力する - Qiita python - Retrieving a Foreign Key value with django-rest-framework serializers - Stack Overflow とりあえず後で試す。

Django Rest FrameworkにRetrofitで送信する(multipart編)

やりたいこと django rest frameworkをバックエンドにAndroid端末からデータを送信する。その結果、特定のModelのインスタンスを生成する。 条件: 特定のModelは、ImageFieldを含むクラスである。 特定のModelインスタンスを生成するためにmultipart通信を…

django-rest-authで"detail": "Authentication credentials were not provided."が返される時

参考 Django Rest Framework - Authentication credentials were not provided - Article - Python Decompiler Online エラーメッセージ {"detail": "Authentication credentials were not provided."} エラーに出くわした状況 rest-authのエンドポイント/re…

DRF PATCHの実装方法

参考 Retrofit 2 — How to Update Objects on the Server (PUT vs. PATCH) How to make a PATCH request using DJANGO REST framework - Stack Overflow Serializers - Django REST framework まずPATCHとは パッチはインスタンスの更新を行うHTTPプロトコル…

DRF tokenからuserオブジェクトを取得する

userオブジェクトを取得する道筋 例えばandroidの画面にuserのプロフィールを表示したいとする。そのためには、userオブジェクトが必要だ。 どの様にすればUserオブジェクトが取得できるのか。 TokenAuthenticationを採用している場合にはユーザーに紐付いた…

curlコマンドについて

まず以下のコマンドを理解する curl -X GET http://127.0.0.1:8000/api/example/ -H 'Authorization: Token 9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b' これの意味を調べる。 参考: https://www.django-rest-framework.org/api-guide/authentication/#toke…

DRF POSTメソッドのデータの取り扱いについて

どうデータを受け取るか POSTメソッドを伴うエンドポイントがあるとして、weアプリケーションはどの様にデータを受け取ればよいのか。 Djangoの機能で処理する方法 Djangoと同じ様にデータを受け取る方法がある。 つまりself.request.POSTの戻り値にPOSTメソ…

django-rest-frameworkのユーザー認証を実現させる

https://www.django-rest-framework.org/api-guide/authentication/ https://blog.sakaki333.com/blog/view/78 はじめに この記事はdjnagoをバックエンドとしてandroidアプリケーションを作成することを前提する。 androidアプリケーションのユーザー認証周…

DRFチュートリアルを読んでわかったことをメモする

Tutorial 2: Requests and Responses 参照:https://www.django-rest-framework.org/tutorial/2-requests-and-responses/ RequestオブジェクトがDRFでは少し異なるらしい。 request.dataが使える。ResponseオブジェクトもDRFでは少し異なるらしい。return Res…

Djangoのアプリにrequestしてレスポンスを得る

djangoのrestapiを実装する DRFをインストールする。 JSONのレスポンスを返す仕組みを構築する。とりあえずdjangoでJSON形式でレスポンスを返す仕組みを構築する。 Http接続を行う 基本的にAsyncTaskクラスを使って、その中のdoInBackgroundメソッド内でhttp…

DRF ImageFieldのファイルパスを登録したい

DRFでImageFieldにデータを登録したい なんとなくだけどModelSerializerを使ってもimageFieldに登録できないような気がしてきた。その辺を調べてみる。 資料:https://www.django-rest-framework.org/api-guide/fields/#file-upload-fields なんかファイルや…

DRF JSONデータの成形

成形する必要性 django rest framework の場合request.POSTには注意事項がある。 それはキーに対する値が空(ブランク?null?)の項目はDRFはエラーを吐き出す。辞書型データに例えて説明すると、ex_dict["key1"]=""の要素を含むデータをrequests.POSTするとエ…

エラー:AssertionError: You cannot call `.save()` on a serializer with invalid data.

AssertionError: You cannot call `.save()` on a serializer with invalid data. 上記のエラーが表示された。 エラーが出た状況: インスタンスを生成することを目的にdjango rest apiでrequests.post()をする。するとdjango アプリケーションで上記のエラ…