Frage

Ich bin die Integration von MongoDB MongoEngine verwenden. Es bietet Auth und Session-Unterstützung, dass ein Standard pymongo Setup fehlen würde.

In regelmäßigen django Auth, es ist eine schlechte Praxis betrachtet die User-Modell zu erweitern, da es keine Garantie, es wird überall korrekt verwendet werden. Ist dies der Fall mit mongoengine.django.auth?

Wenn es ist schlechte Praxis betrachtet, was ist der beste Weg, ein separates Benutzerprofil befestigen? Django hat Mechanismen für eine AUTH_PROFILE_MODULE angibt. Ist dies auch in MongoEngine unterstützt, oder sollte ich manuell die Lookup tun?

War es hilfreich?

Andere Tipps

Wir sind gerade erweitert die Benutzerklasse.

class User(MongoEngineUser):
    def __eq__(self, other):
        if type(other) is User:
            return other.id == self.id
        return False

    def __ne__(self, other):
        return not self.__eq__(other)

    def create_profile(self, *args, **kwargs):
        profile = Profile(user=self, *args, **kwargs)
        return profile

    def get_profile(self):
        try:
            profile = Profile.objects.get(user=self)
        except DoesNotExist:
            profile = Profile(user=self)
            profile.save()
        return profile

    def get_str_id(self):
        return str(self.id)

    @classmethod
    def create_user(cls, username, password, email=None):
        """Create (and save) a new user with the given username, password and
email address.
"""
        now = datetime.datetime.now()

        # Normalize the address by lowercasing the domain part of the email
        # address.
        # Not sure why we'r allowing null email when its not allowed in django
        if email is not None:
            try:
                email_name, domain_part = email.strip().split('@', 1)
            except ValueError:
                pass
            else:
                email = '@'.join([email_name, domain_part.lower()])

        user = User(username=username, email=email, date_joined=now)
        user.set_password(password)
        user.save()
        return user

In Django 1.5 können Sie jetzt eine konfigurierbare Benutzerobjekt verwenden, so dass ein großer Grund ist kein separates Objekt verwenden, und ich denke, es ist sicher zu sagen, dass es nicht mehr schlechte Praxis betrachtet die User-Modell zu erweitern, wenn Sie auf Django <1,5 aber erwartet zu einem bestimmten Zeitpunkt zu aktualisieren. In Django 1.5 wird das konfigurierbare Benutzerobjekt festgelegt mit:

AUTH_USER_MODEL = 'myapp.MyUser'

in Ihrem settings.py. Wenn Sie von einer früheren Benutzerkonfiguration ändern, gibt es Änderungen, die Auswirkungen Sammlung Namensgebung etc. Wenn Sie nicht nur noch auf 1,5 aktualisieren wollen, können Sie das Benutzerobjekt für jetzt verlängern, und es dann später weiter aktualisieren, wenn Sie tun ein Upgrade auf 1.5.

https://docs.djangoproject.com/en / dev / Themen / auth / # auth-custom-Benutzer

N. B. Ich habe nicht persönlich versucht, dies in Django 1.5 w / MongoEngine, aber erwarten, dass sie es unterstützen sollte.

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