Установка и использование django-регистрации - PullRequest
2 голосов
/ 15 июня 2010

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

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

Внутри этого каталога также есть файл init с классом 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 ]

1 голос
/ 15 июня 2010

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

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

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

0 голосов
/ 15 сентября 2010

Цитата:

"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 в этом месте?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...