Я использую django-registration и django-profile для обработки регистрации и профилей. Я хотел бы создать профиль для пользователя во время регистрации. Я создал пользовательский регистрационную форму, и добавил, что в urls.py используя учебник по:Django-Registration & Django-Profile, используя вашу собственную форму
Основная идея в учебнике переопределить форму регистрации по умолчанию, чтобы создать профиль, в то же время.
forms.py - В моем профилях приложение отображается
from django import forms
from registration.forms import RegistrationForm
from django.utils.translation import ugettext_lazy as _
from profiles.models import UserProfile
from registration.models import RegistrationProfile
attrs_dict = { 'class': 'required' }
class UserRegistrationForm(RegistrationForm):
city = forms.CharField(widget=forms.TextInput(attrs=attrs_dict))
def save(self, profile_callback=None):
new_user = RegistrationProfile.objects.create_inactive_user(username=self.cleaned_data['username'],
password=self.cleaned_data['password1'],
email=self.cleaned_data['email'])
new_profile = UserProfile(user=new_user, city=self.cleaned_data['city'])
new_profile.save()
return new_user
В urls.py
from profiles.forms import UserRegistrationForm
и
url(r'^register/$',
register,
{'backend': 'registration.backends.default.DefaultBackend', 'form_class' : UserRegistrationForm},
name='registration_register'),
форма, и я могу войти в Сити, однако он не сохраняет и не создает запись в БД.
спасибо за комментарий. Решил сделать перенаправление для создания профиля при регистрации, таким образом у вас нет профиля для неактивного пользователя. Отметьте этот вопрос, как ответ. – ismail
У меня такая же проблема с новой версией регистрации djando. Shacker, но где именно: «Скопируйте метод register() из DefaultBackend в него». DefaultBackend ??, где есть? Спасибо – Asinox
Asinox - вам нужно получить его из исходного кода регистрации django. Посмотрите в регистрации/backends/default/__ init__.py – shacker