как запустить это представление внутри Django? - PullRequest
0 голосов
/ 16 мая 2019

Я новичок в Django, поэтому, пожалуйста, потерпите меня.

У меня есть следующее представление

@csrf_exempt
@api_view(http_method_names=['POST'])
def login_agro_user(request):

    request_data = request.data

    if not request_data:
        return Response({"status_code": 400})

    secret = request_data.get('secret')
    if secret != 'test':
        return Response({"status_code": 400})

    payload = request_data.get('payload')
    payload = json.loads(base64.b64decode(payload).decode('utf-8'))
    serializer = AgroUserSerializer(data=payload)

    if serializer.is_valid():
        query = AgroUser.objects.filter(user_guid=payload['user_guid'])
        if not query:
            serializer.save()
        elif query[0].active == False:
            query.update(active=True)
        key = secrets.token_urlsafe()
        query.update(key=key)
        response_data = {"callback": f"{settings.FRONT_BASE_URL}/{key}"}
        return Response(response_data)

    return Response({"status_code": 400})

Это представление связано со следующей конечной точкой

urlpatterns = [
    path('', admin.site.urls),
    url(r'^api/v1/login_agro_user', login_agro_user),

Код должен генерировать токен, подобный этому zLdu6NrHnvyUnixnvV-PiaQwro4QSNp0MaRmYQ9W09c.

Однако,

У меня следующий вопрос:

  • Гдедолжно ли отображаться представление?
  • Если я хочу создать токен, должен ли я запускать представления в автономном режиме?

Любая помощь приветствуется, так как я теряю здравомыслие.

Спасибо.

1 Ответ

1 голос
/ 16 мая 2019

Не уверен, что это ответ, но вы можете вызвать свой метод так:

curl -XPOST 0:8000/api/v1/login_agro_user -H "Content-Type: application/json" -d '{"secret": "test", "payload": "eyJmaXJzdF9uYW1lIjogIkpvaG4iLCAibGFzdF9uYW1lIjogIkRvZSIsICJlbWFpbCI6ICJmb29AZXhhbXBsZS5jb20iLCAiYWN0aXZlIjogdHJ1ZSwgImtleSI6ICJzZWNyZXQifQ=="}'

Для создания правильной полезной нагрузки вы можете использовать:

>>> import base64
>>> import json
>>> base64.b64encode(json.dumps({"first_name": "John", "last_name": "Doe", "email": "foo@example.com", "active": True, "key": "secret"}).encode('utf8'))
b'eyJmaXJzdF9uYW1lIjogIkpvaG4iLCAibGFzdF9uYW1lIjogIkRvZSIsICJlbWFpbCI6ICJmb29AZXhhbXBsZS5jb20iLCAiYWN0aXZlIjogdHJ1ZSwgImtleSI6ICJzZWNyZXQifQ=='
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...