Django-регистрация 0,8 сигнала не работает
-
25-09-2019 - |
Вопрос
Привет, теперь я работаю этой базой на учебном пособии Дмицко по расширению Django-регистрационный пост, Все, все вышел хорошо, только я не могу правильно получать сигнал user_registered.
формы
from django import forms
from registration.forms import RegistrationForm
from models import UserProfile
class UserProfileForm(RegistrationForm):
fullname = forms.CharField(max_length=200)
address = forms.CharField(max_length=200)
Urls.py.
from django.conf.urls.defaults import *
from registration.views import register
from forms import UserProfileForm
import regbackend
urlpatterns = patterns('',
url(r'^accounts/register/$', register, {'backend': 'registration.backends.default.DefaultBackend','form_class': UserProfileForm}, name='registration_register'),
(r'^accounts/', include('registration.backends.default.urls')),
)
regbackend.py.
from forms import UserProfileForm
from models import UserProfile
def user_created(sender, user, request, **kwargs):
form = UserProfileForm(request.POST)
data = UserProfile(user=user)
data.fullname = form.cleaned_data["fullname"]
data.address = form.cleaned_data["address"]
print "USER CREATED SIGNALS!"
data.save()
from registration.signals import user_registered
user_registered.connect(user_created)
print "REGBACKEND!"
Я могу получить все, что они работают нормально, но я не могу получить свой сигнал, чтобы правильно подключиться к моему методу user_created. Метод печати - это просто способ проверять коды. Не можете получить user_created для печати "Созданные пользователем сигналы!".
Есть предположения??
Решение
Слушатель сигнала должен быть инициирован до вызова сигнала - попробуйте импортировать gragbackend.py в models.py Перед регистрацией сигнала - если он начнет работать, у вас есть ключ о решении.
Также не используйте печать, вместо этого используйте встроенный модуль для ведения журнала Python. Вы также можете запустить сеанс отладки с IE. IPDB, чтобы увидеть, принимается ли сигнал, и если пользователь создан, OT вы можете написать простую единицу теста или докуда, чтобы проверить это.