-
Этот вопрос уже поднимался тут http://softwaremaniacs.org/forum/django/6687/
но для меня, только начинающего изучать Django, остался не до конца раскрытым.
Итак, задача простая - сделать регистрацию пользователей, сохраняя при этом доп. информцию о пользователе.
Для хранения доп. информации я воспользовался методом наследования от стандартного User-a описанного здесь http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance/
Теперь собственно вопрос - как в django-registration вместо стандартной формы регистрации вывести форму, полученную на основе модели расширенного пользователя?
В документации к django-registration сказано следующее: "By default, this backend (default backend) uses registration.forms.RegistrationForm as its form class for user registration; this can be overridden by passing the keyword argument form_class to the register() view."
Не могу понят куда передавать этот keyword argument form_class -
В backends/default/urls.py для register/
-
А можно немного подробнее? Т.е. я должен создать каталог backends/default/ с файлом urls.py следующего содержания
from myproject.accounts.forms import RegistrationForm
а в основном urls.py как на этот файл ссылаться?urlpatterns = patterns('',
(r'register/', RegistrationForm),
) -
Для начала просто прочитайте документацию об url patterns. Что они значат, как их писать, как передавать параметры.
В основном urls.py вместо того, чтобы подключать сразу все пути registration:
(r'^auth/', include('registration.urls'))нужно подключить их по отдельности с нужными параметрами. В данном случае - классом формы.
Если определить параметры нужно только одному url, не обязательно копировать все:
(r'^auth/register/$', 'registration.views.register', {'arg': value}), (r'^auth/', include('registration.urls')) -
@andrexus, загляни в каталог с registration, а в нем найди указанный файл. Ну и в документации об этом неплохо написано, так как там есть несколько готовых решений для форм, которые можно использовать вместо той что по умолчанию.
-
Всем большое спасибо. Разобрался. Как-то в сети мало информации по этому поводу. Хотя задача-то достаточно типичная.
На сколько мне стало понятно, следующим шагом будет наследование DefaultBackend и переопределение метода register для того чтобы заполнить поля расширенного User-a.
На сколько это правильный подход и каким образом вы решаете такие стандартные задачи как регистрация и активация пользователей? -
Все правильно. Нужно сделать наследника и переопределить
register. -
Еще один вопрос:
метод register из DefaultBackend вызывает метод create_inactive_user из класса RegistrationProfile, который в свою очередь создает нового пользователя и отсылает email. Нужно ли ко всему прочему наследовать RegistrationProfile и переопределить метод create_inactive_user или лучше вытащить всю его логику в register?
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.


