Установка и использование django-регистрации

Ранее я использовал более старую версию django-registration, которая, похоже, устарела. Поскольку мой сервер не позволяет мне устанавливать плагины Python, мне нужно использовать "регистрацию" как отдельное приложение django. Теперь мой вопрос: что мне нужно изменить, чтобы регистрация работала как django-app? Могу ли я просто скопировать "регистрацию" в мой каталог проекта django, добавить его в настройках, и оно должно работать? Раньше не было такого понятия, как 'backend', теперь файл инициализации backend с функцией get_backend, который принимает 'path' в качестве аргумента. Я думаю, этот путь отправляется через URL, верно?

       url(r'^activate/(?P<activation_key>\w+)/$',
           activate,
           {'backend': 'registration.backends.default.DefaultBackend'},
           name='registration_activate'),

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

http://paste.pocoo.org/show/225790/

Они оба используют сигналы. Нужно ли мне как-то беспокоиться об этих сигналах? (Я все еще не совсем понимаю, для чего они используются). Последнее. Ранее после регистрации он перенаправлял либо заданный success_url, либо задавал шаблон таким образом:

return HttpResponseRedirect(success_url or reverse('registration_complete'))

Теперь код отвечает за это выглядит:

        if success_url is None:
            to, args, kwargs = backend.post_registration_redirect(request, new_user)
            return redirect(to, *args, **kwargs)
        else:
            return redirect(success_url)

и post_registration_redirect:

def post_registration_redirect(self, request, user):
    """
    Return the name of the URL to redirect to after successful
    user registration.

    """
    return ('registration_complete', (), {})

Так почему же это изменилось таким образом, если оно все еще просто перенаправлялось на "registration_complete"? Арги и кварги пусты, так зачем?

2 ответа

Решение

Ситуация намного проще, чем вы ее представляете. Приложения Django (такие как регистрация) являются обычными пакетами Python и могут быть импортированы как таковые. Это означает, что регистрация может жить где угодно, уже в вашем пути к Python. Часто самое простое место для этого находится в корневом каталоге проекта.

Аргумент бэкэнда там просто принимает путь импорта python. Аргумент был добавлен, чтобы люди могли расширять Django-Registration для использования пользовательских бэкэндов, если они того пожелают.

Если вы поместите каталог регистрации в путь к Python, существующая строка будет работать нормально.

Цитата:

"Because my server does not allow me to install python plugins I need to 
 use 'registration' as separate django application."

Это потому что у вас нет root-доступа? Вы пытались использовать virtualenv (ссылка на мой блог) для создания собственной (полностью записываемой) установки Python/Django? Или создать каталог для записи в месте, где у вас есть права на запись, установить там django-registration и указать PYTHON_PATH в этом месте?

IMO, похоже, вы слишком быстро отказались от опции "установить django-registration" и перешли к более сложному "запустить его на другом сервере".

Другие вопросы по тегам