Ошибка при переносе стороннего приложения Django? (Facebook, django-социальная регистрация, django-профили) - PullRequest
2 голосов
/ 20 октября 2010

Я использую django-socialregistration для управления соединением моего сайта с Facebook.

Когда пользователь нажимает кнопку «Подключиться к Facebook», я могу автоматически создать нового пользователя Django и войти в него. Однако мне также необходимо создать запись UserProfile (мой AUTH_PROFILE_MODULE) для него, котораясодержит информацию об их профиле в Facebook (адрес электронной почты, имя, местоположение).

Я считаю, что мне нужно переопределить представление «setup» социальной регистрации, чтобы я мог делать то, что мне нужно, с UserProfile.Я добавил следующее в файл urls.py моего проекта:

url (r '^ social / setup / $', 'myapp.views.socialreg.pre_setup', name = 'socialregistration_setup'),

Мой пользовательский вид находится здесь "/myapp/views/socialreg.py" и выглядит следующим образом:

from socialregistration.forms import UserForm

def pre_setup(request, template='socialregistration/setup.html', 
              form_class=UserForm, extra_context=dict()):
    # will add UserProfile storage here...
    return socialregistration.views.setup(request, template, form_class, extra_context)

Подпись представления социальной регистрации, которую я переопределяю, выглядит следующим образом:

def setup(request, template='socialregistration/setup.html',
          form_class=UserForm, extra_context=dict()):
    ...

Я получаю сообщение об ошибке "ViewDoesNotExist в / social / setup /: Не удалось импортировать myapp.views.socialreg. Ошибка была: модуль с именем socialregistration.views не обнаружен" когда я пробую решение выше.

Приложение социальной регистрации работает нормально, когда я не пытаюсь переопределить представление, поэтому оно, вероятно, правильно установлено в пакетах сайта.Кто-нибудь знает, что я делаю не так?

1 Ответ

2 голосов
/ 22 октября 2010

ОК, как заметил Тим, эта конкретная проблема была связана с путем.

Большее изображение, способ выполнить то, что я хотел (создание связанного UserProfile, когда django-socialregistration создает пользователя), лучше всего сделать, передав пользовательскую форму в представление «setup» социальной регистрации, как предложил автор: *http://github.com/flashingpumpkin/django-socialregistration/issues/issue/36/#comment_482137

Перехватите соответствующий URL в вашем файле urls.py:

from myapp.forms import UserForm    
url('^social/setup/$', 'socialregistration.views.setup', 
    { 'form_class': UserForm }, name='socialregistration_setup'),
(r'^social/', include('socialregistration.urls')), 

Вы можете создать свою пользовательскую форму из собственной пользовательской формы социальной регистрации, добавив код для заполнения и сохранения пользовательского профиля.

...