django-rest-frameworkを3.1.3から3.5.3にアップグレードしています。アップグレード後、DefaultRouterを利用してURLを生成するModelViewSetビューとviewsets.GenericViewSetビューは、HEADメソッド呼び出しを許可しなくなりました。リリースノートとドキュメントを検索し、HEADの許可を停止させた設定や変更を見つけられませんでした。django-rest-frameworkへのアップグレード後にHEADメソッドを使用できません。3.5.3
私はDefaultRouterをサブクラス化し、ルートのデフォルトを変更することでこの問題を解決することができますが、これが最適または正しい解決策ではないと思います。 django-rest-frameworkの問題とドキュメントの中で、django-rest-frameworkはHEADメソッドとOPTIONSメソッドを自動的に処理する必要があるようです。
@detail_route、@list_route、およびGETメソッドを許可するApiViewから派生したビューは、自動的にHEADおよびOPTIONメソッドを取得します。
なぜこのアップグレード後にHEADメソッドが表示されなくなったのですか?私たちのルートでHEADメソッドを使用できるようにする正しい方法は何ですか?
from rest_framework.routers import DefaultRouter
from user_profile import views
router = DefaultRouter(trailing_slash=False)
router.register(r'user_names', views.UserNameView)
urlpatterns = router.urls
とビュー:
class UserNameView(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):
queryset = User.objects.only(
"id", "first_name", "last_name", "email",
"mobile_phone", "photo", "is_active", "date_joined"
).select_related("photo").all()
serializer_class = serializers.UserNameSerializer
HEADコールに
郵便配達の応答:
Status: 405 Method Not Allowed
Allow →GET, OPTIONS
Content-Type →application/json
Date →Wed, 09 Nov 2016 20:50:41 GMT
Server →WSGIServer/0.1 Python/2.7.12
Vary →Cookie
X-Frame-Options →SAMEORIGIN
x-xss-protection →1; mode=block
私たちのルートとModelViewSet定義
は非常に標準装備され、ここで非現用ルートであります
あなたのURLとあなたの意見のコードを入力してください。ビューセットを使用していますか? – wim
問題のコードを追加しました... – brocksamson