2 votes

Installation et utilisation de django-registration

Auparavant, j'utilisais une ancienne version de django-registration qui semble être obsolète. Comme mon serveur ne me permet pas d'installer des plugins python, j'ai besoin d'utiliser 'registration' comme une application django séparée. Maintenant, ma question est de savoir ce que je dois modifier pour que l'enregistrement fonctionne comme une application django ? Puis-je simplement copier 'registration' dans mon catalogue de projets django, l'ajouter dans les paramètres et cela devrait fonctionner ? Auparavant, il n'y avait pas de définition de 'backend', maintenant backend init avec la fonction get_backend, qui prend 'path' comme argument. Je suppose que ce chemin est envoyé via l'url, n'est-ce pas ?

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

Ce catalogue contient également init avec la classe DefaultBackend, avec les classes activate et register.

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

Ils utilisent tous deux des signaux. Dois-je m'occuper de ces signaux d'une manière ou d'une autre ? (Je n'ai toujours pas compris à quoi ils servent). Dernière chose. Auparavant, après l'enregistrement, il y avait une redirection vers le success_url donné ou le template défini de cette manière :

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

Le code responsable de cet aspect est maintenant :

        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)

et le 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', (), {})

Pourquoi cette modification a-t-elle été apportée si la redirection se fait toujours vers "registration_complete" ? Les args et kwargs sont vides, alors pourquoi s'en préoccuper ?

1voto

Gabriel Hurley Points 17079

La situation est beaucoup plus simple que vous ne le laissez entendre. Les applications Django (comme l'enregistrement) sont des paquets Python normaux et peuvent être importés en tant que tels. Cela signifie que l'enregistrement peut vivre n'importe où qui se trouve déjà dans votre chemin python. Souvent, l'endroit le plus simple pour cela est le répertoire de votre projet Root.

L'argument backend ne prend qu'un chemin d'importation python. Cet argument a été ajouté pour que les gens puissent étendre Django-Registration afin d'utiliser des backends personnalisés s'ils le souhaitent.

Si vous placez le répertoire d'enregistrement dans votre chemin python, la chaîne existante devrait fonctionner correctement.

0voto

mitchf Points 1069

Citation :

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

Est-ce parce que vous n'avez pas d'accès root ? Avez-vous essayé d'utiliser virtualenv (Lien vers mon propre blog) pour créer votre propre installation Python/Django (entièrement inscriptible) ? Alternativement, créer un répertoire accessible en écriture dans un endroit où vous avez un accès en écriture, y installer django-registration et faire pointer votre PYTHON_PATH vers cet emplacement ?

IMO, il semble que vous ayez abandonné trop rapidement l'option "installer django-registration" et que vous ayez opté pour l'option plus compliquée "l'exécuter sur un serveur différent".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X