Frage

Ich benutze (und lerne) Django für mein neuestes Produkt, und ich habe gerade installiert und begann zu verwenden Django-Registrierung App, damit meine Benutzer sich automatisch selbst registrieren können.

Alles funktioniert gut, aber ich denke darüber nach, jedem neuen Benutzer einer bestimmten Gruppe (bereits erstellt) zuzuweisen, damit ich die Administratoren von den normalen Benutzern "trennen" kann.

Wie kann ich das machen? Die Dokumentation zu dieser App ist schrecklich, IMO.

Ich habe kein Modell oder eine Konfiguration erstellt, um die Django-Registrierungs-App zu verwenden.

War es hilfreich?

Lösung

Zunächst bin ich kein Experte bei DR (Django-Registrierung) und habe es nur überprüft, weil Sie es in Ihrer Frage erwähnt haben. Also, wenn jemand anderes eine bessere Antwort hat, senden Sie sie bitte. Wie auch immer, hier geht es.

Mir ist aufgefallen, dass die Art und Weise, wie Benutzer (oder "Profile", wie DR sie nennt, sie nennt) erstellt wird, in der Funktion create_inactive_user in der Registrierung gefunden wird. Also in dieser Funktion nach:

new_user.is_active = False
new_user.save()

Sie könnten so etwas hinzufügen wie:

default_group = Group.objects.get(name=WHATEVER_THE_GROUP_NAME_IS)
user_group, is_created = UserGroup.get_or_create(user=new_user)
user_group.group = default_group
#user_group.groups.add(default_group)   # Django ver. 1.7+
user_group.save()

Sie könnten wahrscheinlich ohne den Get_OR_Create verzichten, da ich nicht glaube, dass Sie mehr als einen Benutzer mit demselben Benutzernamen erstellen können, aber ich wäre lieber auf Nummer sicher als Entschuldigung.

Diese Methode veranlasst Sie, die DR -Dateien (die möglicherweise nicht das Beste zu tun haben) zusammen mit festen Dingen (wie dem Standardgruppennamen) zu bearbeiten, aber es sollte ein guter Ausschreitungspunkt sein.

Ps. Der Standardgruppenname könnte eine Variable in der Datei "Einstellungen" -Py sein, die ihn zugänglicher und hübscher machen würde. Beispiel:

settings.py:
DEFAULT_GROUP_NAME = 'YOUR GROUP NAME'

registration/models.py:
default_group = Group.objects.get(name=settings.DEFAULT_GROUP_NAME)

Wie auch immer, hoffe das hilft.

Andere Tipps

Am Ende machte ich eine Gabel dafür, da das mich verrückt machte.

https://github.com/kcunning/django-registration

Fügen Sie im Grunde die folgende Folgendes in Ihre Einstellungen hinzu. Py -Datei:

Registrierung_default_group_name = "GroupName"

Jeder Benutzer, der über das Registrierungsmodul hinzugefügt wird, wird diese Gruppe beim Erstellen gegeben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top