Django-profiletools je aplikace, Django, který poskytuje nástroje pro profilové modely v Django.
Instalace
Získat kód:
Pip nainstalovat Django-profiletools
Nainstalujte middleware a context_processor ve vašem settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
& Nbsp; ...
& Nbsp; "profiletools.context_processors.fetch_profile"
)
MIDDLEWARE_CLASSES = (
...
"Profiletools.middleware.LazyProfileMiddleware ',
)
Také v settings.py, nastavte AUTH_PROFILE_MODULE k vašemu modelu profilu:
AUTH_PROFILE_MODULE = "profiles.Profile"
Na základě toho by měl váš model profil vypadat něco jako:
# Profiles.models.Profile.py
od django.contrib.auth.models dovozu uživatele
od django.db modelů dovozních
třída Profile (models.Model):
& Nbsp; user = models.OneToOneField (Uživatel)
& Nbsp; def __unicode __ (self):
& Nbsp; návrat self.user.username
Poznámka: Pokud nechcete použít profiles.models.Profile, říkají members.models.UserProfile jděte do toho a změnit AUTH_PROFILE_MODULE na "members.UserProfile".
Použít
Ve vašich šablon:
{{}} Request.my_profile
Ve svých funkčních zobrazení:
profil = request.my_profile
Ve vašich názorů třídně založené na:
profile = self.request.my_profile
Zavolejte my_profile tolikrát, kolikrát chcete, je jen jednou zatížení. Takže pokud jste to nazýváte 100 krát v pohledu, SELECT SQL se provádí pouze při prvním. Není-li nalezen žádný uživatel pak výsledek my_profile hovor je None, což usnadňuje manipulaci šablony, které musí být schopen zvládnout neověřených uživatelů (podobně jako o straně).
Poznámka: Používáte-li příklad members.UserProfile, budete muset zavolat, že pomocí request.my_userprofile.
Problémy s Python "je" hodnocení a "typ" vestavěný
Použijete-li je zhodnocení, než dělat něco jiného s my_profile objektu, bude chovat poněkud neočekávaným způsobem:
Vždy vrátí false. Například:
>>> Print (request.my_profile je None)
Falešný
>>> P = request.user.get_profile ()
>>> Print (request.my_profile je p)
Falešný
Také typ vestavěný vrátí django.utils.functional.SimpleLazyObject objektu:
>>> Print (typ)
Mějte na paměti, co je umístěna v hodnotě my_profile není ModelClass instance nebo žádný objekt, ale spíše django.utils.functional.SimpleLazyObject.
Jak hodnotit my_profile objekt
== Použít k vyhodnocení my_profile objekt. To přinutí objekt, který bude vyhodnocen a už se nevrátí frustrující falešně pozitivní.
Inspirace
Líný zatížení profilů byl inspirován spíše neuvěřitelnou Noah Kantrowitz
Vlastnosti :.
- Lazy zatížení vašeho ověřeného profilu rekord přes požadavek objektu života. To znamená, že v Pythonu a šablon.
- Pojmenujte svůj profil modelu, co chcete v settings.AUTH_PROFILE_MODULE.
Požadavky na :
- Python
- Django
Komentáře nebyl nalezen