2016-06-30 2 views
0

Я пытаюсь использовать аутентификацию на основе токена Django Rest Framework. У меня есть следующие в models.py моего приложенияЯрлыки маркеров Django Rest не создаются автоматически

from django.db.models.signals import post_save 
from django.dispatch import receiver 
from rest_framework.authtoken.models import Token 
from django.conf import settings 

@receiver(post_save, sender=settings.AUTH_USER_MODEL) 
def create_auth_token(sender, instance=None, created=False, **kwargs): 
    if created: 
     Token.objects.create(user=instance) 

Всякий раз, когда я создаю новый счет (либо через «createsuperuser» или с помощью моей регистрационной формы), пользователь правильно добавляется в таблицу «AUTH_USER» , Однако, хотя таблица «authtoken_token» создана, в нее ничего не добавлено. Это заставляет меня думать, что мой @ -рецептор может работать неправильно.

Однако я могу вручную создавать маркеры, используя оболочку Django. Эти жетоны будут правильно добавлены в таблицу authtoken_token.

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

Благодаря

+0

У вас AUTH_USER_MODEL явно указан в 'settings.py'? В противном случае вы всегда можете использовать 'get_user_model()' –

+0

У меня нет явного определения. Я только что попробовал использовать get_user_model(), но я получил тот же результат. – ethanzh

+0

У вас есть регистрация? Попробуйте либо распечатать, либо записать что-нибудь в ресивере и посмотреть, даже ли он работает. –

ответ

1

Вещи, чтобы проверить:

  • ли приемник даже работает? Добавление печати или войти внутрь, чтобы убедиться, что он вызывается в первую очередь
  • Если AUTH_USER_MODEL не определен, возможно, придется использовать get_user_model() вместо
  • Убедитесь, что этот код находится внутри models.py файла приложения, которое является в settings.INSTALLED_APPS

Я использовал DRF в течение нескольких лет и не имел этой проблемы. Один из вышеперечисленных, скорее всего, ваш преступник.

+0

Каков наилучший способ добавления печати? Я использовал get_user_model(), и я уверен, что приложение находится в settings.INSTALLED_APPS, поэтому я предполагаю, что получатель не загружает – ethanzh

+0

... 'print« Hello World »' –

+0

Huh. Понял, что это намного больше, чем это. Будет ли это просто печатать на консоли Django? – ethanzh