1

DRF とシリアライザーを使用して、django でユーザーをロックおよびロック解除するための API エンドポイントを作成しました。

ユーザーをロックしてユーザーのロックを解除するために、django テンプレートでこの残りのサービスを呼び出したいと思います。

ここにテンプレートのコードがあります

<a href="{% url 'rest-auth/rest_lock/' %}?username={{user.username}}" class="table-btn"><span class="glyphicon glyphicon-lock" /></a> {% else %} <a href="{% url 'rest-auth/rest_unlock/' %}?username={{user.username}}" class="table-btn"><span class="glyphicon glyphicon-briefcase" /></a>

問題は、上記の Web サービスを呼び出していますが、その Web サービスでユーザーをロックできないことです。

これが残りのサービスのコードです。

シリアライザーでは:

class LockUserSerializer(serializers.ModelSerializer):
"""
User model w/o password
"""
class Meta:
   model = UserModel
   #fields=('username')
   exclude = ('password','email','last_login','is_superuser','is_active','first_name','last_name','is_staff','date_joined','groups','user_permissions')

class UnlockUserSerializer(serializers.ModelSerializer):
"""
User model w/o password
"""
class Meta:
   model = UserModel
   #fields=('username')
   exclude = ('password','email','last_login','is_superuser','is_active','first_name','last_name','is_staff','date_joined','groups','user_permissions')

views.py で:

class LockUserView(GenericAPIView):
serializer_class=LockUserSerializer
permission_classes = (AllowAny,)

def post(self, request):
    user = User.objects.get(username=request.POST.get('username'))
    print user
    user.is_active=False;
    user.save()
    return Response({"success": "User has been locked."})

class UnlockUserView(GenericAPIView):
serializer_class=UnlockUserSerializer
permission_classes = (AllowAny,)

def post(self, request):
    user = User.objects.get(username=request.POST.get('username'))
    print user
    user.is_active=True;
    user.save()
    return Response({"success": "User has been unlocked."})

urls.py で

from rest_auth.views import (
LoginView, LogoutView, UserDetailsView, PasswordChangeView,
PasswordResetView, PasswordResetConfirmView,LockUserView,UnlockUserView

)

urlpatterns = [
    **url(r'^rest_lock/$', LockUserView.as_view(), name='rest_lock'),
    url(r'^rest_unlock/$', UnlockUserView.as_view(), name='rest_unlock'),**
]

私が作成した残りのサービスは、REST クライアント (RESTEASY、POSTMAN など) からユーザー名のデータを投稿するときに完全に機能しますが、ユーザー名のテンプレートから値を送信するときに、サービスを呼び出して実装することができます。誰でもこれを機能させる方法を教えてもらえますか???

4

1 に答える 1

1

HTTP POST を送信していません。そのためには、<form>. したがって、次のようなものが必要です。

<form action="{% url 'rest-auth/rest_lock/' %}?username={{user.username}}" method="POST"
    <input type="submit" value="Submit">
</form>

「送信」ボタンにもスタイルを適用する必要があります。

HTML フォームの詳細については、こちらをご覧ください。

于 2016-01-14T12:59:30.677 に答える