2016-01-14 1 views
1

Я создал конечные точки api для блокировки и разблокировки пользователя в django с помощью DRF и seriliazers.как вызвать службу отдыха из шаблонов в django из seriliazers.py и views.py в структуре django rest

Я хочу назвать эти службы отдыха в своем шаблоне 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>

Проблема в том, я звоню выше веб-службы, но я не в состоянии заблокировать пользователя с этой веб-службы.

Вот код услуг для отдыха.

В seriliazers:

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 Client (например, RESTEASY, POSTMAN), но при отправке значения из шаблонов имени пользователя я могу вызвать службу и реализовать ее. Может ли кто-нибудь сказать, как это сделать? ???

+0

Пожалуйста, добавьте ошибку или сообщение, которое вы получаете из Django. –

ответ

1

Вы не отправляете HTTP POST. Для этого вам необходимо создать <form>. Итак, у вас должно быть что-то вроде этого:

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

Вам также необходимо применить свой стиль к кнопке «Отправить».

Узнать больше о HTML-формах here.

+0

Я тоже пробовал, но я не могу позвонить в службу отдыха. –

+0

Можете ли вы разместить свой HTML-код с помощью формы? –

+0

{%, если user.is_active == Правда%} {%}% еще {% ENDIF%} –