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 など) からユーザー名のデータを投稿するときに完全に機能しますが、ユーザー名のテンプレートから値を送信するときに、サービスを呼び出して実装することができます。誰でもこれを機能させる方法を教えてもらえますか???