Django-profiletools היא אפליקציה Django המספקת כלים לדגמי פרופיל בDjango.
התקנה
קבל את הקוד:
PIP להתקין Django-profiletools
התקן את התווך וcontext_processor בsettings.py שלך:
TEMPLATE_CONTEXT_PROCESSORS = (
& Nbsp; ...
& Nbsp; 'profiletools.context_processors.fetch_profile',
)
MIDDLEWARE_CLASSES = (
...
"Profiletools.middleware.LazyProfileMiddleware ',
)
גם בsettings.py, להגדיר את AUTH_PROFILE_MODULE למודל הפרופיל שלך:
AUTH_PROFILE_MODULE = "profiles.Profile"
בהתבסס על כך, מודל הפרופיל שלך צריך להיות דומה משהו כמו:
# Profiles.models.Profile.py
מdjango.contrib.auth.models משתמש יבוא
ממודלי יבוא django.db
פרופיל כיתה (models.Model):
& Nbsp; משתמשים = models.OneToOneField (משתמש)
& Nbsp; def __unicode __ (עצמי):
& Nbsp; self.user.username התמורה
שים לב: אם אתה לא משתמש בprofiles.models.Profile, אומר members.models.UserProfile קדימה ולשנות את AUTH_PROFILE_MODULE ל" members.UserProfile ".
שימוש
בתבניות שלך:
{{}} Request.my_profile
בתצוגות פונקציונליות שלך:
פרופיל = request.my_profile
בתצוגות המבוססת על הכיתה שלך:
פרופיל = self.request.my_profile
התקשר my_profile פעמים רבות ככל שאתה רוצה, זה רק פעם אחת עומסים. אז אם אתה קורא לזה 100 פעמים בנוף, SELECT SQL נעשה רק בפעם הראשונה. אם אין אף משתמש מצא אז שיחת my_profile התוצאה היא אין, מה שהופך אותו קל יותר להתמודד עם תבניות אשר צריך להיות מסוגל להתמודד עם משתמשים לא מאומתים (כמו על הדף).
שים לב: אם אתה משתמש בדוגמא members.UserProfile, תצטרך לקרוא את זה באמצעות request.my_userprofile.
בעיות עם Python של "הוא" הערכה ו" סוג "מובנה
אם אתה משתמש בהוא הערכה לפני שאני עושה כל דבר אחר עם אובייקט my_profile, זה יתנהג באופן מעט בלתי צפוי:
תמיד יחזור שווא. לדוגמא:
>>> הדפסה (request.my_profile היא ללא)
False
>>> P = request.user.get_profile ()
>>> הדפסה (request.my_profile היא p)
False
כמו כן, הסוג מובנה יחזור אובייקט django.utils.functional.SimpleLazyObject:
>>> הדפסה (סוג)
<הכיתה 'django.utils.functional.SimpleLazyObject'>
זכור מה מונח בשווי my_profile הוא לא אובייקט למשל או אף ModelClass, אלא django.utils.functional.SimpleLazyObject.
כיצד להעריך את אובייקט my_profile
השתמש == על מנת להעריך את אובייקט my_profile. זה מאלץ את האובייקט להיות מוערכים ולא יחזור שווא-תוצאות חיוביות מתסכלות.
השראה
הטעינה העצלה של פרופילים בהשראת נח קנטרוביץ ולא המדהים
תכונות :.
- טעינה עצלה של שיא הפרופיל המאומת שלך מעבר לכל חיים אובייקט בקשה. כלומר, בקוד פייתון והתבניות.
דרישות :
- Python
- Django
תגובות לא נמצא