[TehPUG] User manger App
soroosh sarabadani
soroosh.sarabadani at gmail.com
Mon May 26 07:21:02 CEST 2014
سلام
به نظر من استفاده از profile بهتره و من تو چند پروژه از این روش استفاده
کردم و خوب جواب گرفتم.
خیلی ممنون از مدلی که ارایه کردید و زحمتی که کشیدید. من به عنوان یک چالش
میخوام یک سوال مطرح کنم.
سوال من اینه که در مدلهایی مثل PugMessage وPugFriend میشه ارتباطها رو
مستقیم با User برقرار کرد و PugUsers که به نظرم PugUser باید باشه به
PugProfile تغییر نام بده و به عنوان یک patch بر روی مدل User implement بشه.
2014-05-26 9:29 GMT+04:30 NIM4N <nim4n at yahoo.com.dmarc.invalid>:
> سلام
> دستت درد نکنه
>
> اونی که من میگفتم ساپورت نمیشه این بود که ظاهرا با اینی که شما نوشتی فرق
> میکنه
>
> Deprecated in Django 1.5:
>
> Deprecated since version 1.5: With the introduction of *custom User
> models*<https://docs.djangoproject.com/en/1.6/topics/auth/customizing/#auth-custom-user>,
> the use of AUTH_PROFILE_MODULE<https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-AUTH_PROFILE_MODULE>
> to define a single profile model is no longer supported. See the *Django
> 1.5 release notes* <https://docs.djangoproject.com/en/1.6/releases/1.5/> for
> more information.
>
> Prior to 1.5, a single profile model could be specified site-wide with the
> setting AUTH_PROFILE_MODULE<https://docs.djangoproject.com/en/1.6/ref/settings/#std:setting-AUTH_PROFILE_MODULE>
> with a string consisting of the following items, separated by a dot:
>
> 1. The name of the application (case sensitive) in which the user
> profile model is defined (in other words, the name which was passed to
> manage.py startapp<https://docs.djangoproject.com/en/1.6/ref/django-admin/#django-admin-startapp>
> to create the application).
> 2. The name of the model (not case sensitive) class.
>
>
> On 05/26/2014 04:24 AM, amir baleghi wrote:
>
> سلام بر کاربر های عزیز TEHPUG
> خسته نباشید .. همون طور که توی جلسه مشخص شد قرار شد یک سیستم مدیریت
> کاربران برای سایت پاگ بسازیم. خوب همون طور که توی جلسه بحث کردیم مدلی که
> بنده آورده بودم رو برای به عنوان شروع کار قرار دادیم... (البته با تغییرات
> احتمالی که در ادامه می گم)...
> برای شروع کار از کتابخونه Djengo کمک می گیرم . توی این سایت مقدمات
> سفارشی کردن سیستم user manager رو توضیح داده . به همه بچه توصیه می کنم این
> رو تا انتها بخونن.... تمام روش هایی رو که شمای می تونید از سیستم user
> manager جنگو استفاده کنید رو توضیح داده است. و معایب بعضی از روش ها رو هم
> بیان کرده است.
>
> https://docs.djangoproject.com/en/dev/topics/auth/customizing/
>
> خوب در ادامه به سیستم پیشنهادی می پردازیم
> برای شروع کار من از ساختار پروفایل استفاده کردیم .که البته باید در مورد
> استفاده از این ساختار با هم به توافق برسیم . انتخاب ساختار بستگی به روش کار
> ما داره که باید روش بحث کنیم . که ادامه بهش اشاره می کنم
> با توجه به مستندات لینک بالا بهترین روش های برای استفاده از ساختار user
> manager جنگو دو روش زیر می باشند:
> ۱- روش پروفایل
> ۲ - استفاده از Abstract class
> هستش. بقیه روش ها یا برای ما کارایی لازم رو نداره یا دارای معایب بزرگی
> هست. البته بازم بجه اگر روش دیگه به نظر شون میاد بگن که روی اون ها هم بحث
> کنیم
> روش پروفایل همون طور که در مستند توضیح داده شده است. از یک ارتباط یک به
> یک بهره می بره . شما با درست کردن مدل خودتون به صورت کاملا سفارشی اون رو
> مدل کاربران اصلی جنگو با یک ارتباط یک به یک ارتباط می دهید
> مزایا این روش خیلی زیاد هست . و یک پشتوانه علمی داره . اگر لازم به ذکر
> شد توضیخ می دم
> معایب هم کاملا مشخصه وقتی شما یک مدل را به یک مدل دیگه متصل می کنید بحث
> هزینه های join و پیجیدگی query ها مطرح میشه. که خوب این هم به نظر من با
> بهینه سازی query ها می تونیم این مسایل رو برطرف کنیم. حتی می تونیم از فیلد
> های redundant استفاده کنیم که هزینه join ها مون پایین بیاد.
>
> در روش دوم بجث Abstract class
> در این روش ما با استفاده از کلاس های abstract اقدام به ساخت یک سیستم
> جدید user manger می کنیم که با استفاده از ارث بری از کلاس های abstract
> کاربری از روش استفاده می کنیم .
> مزایا این روش به نظر من سفارشی کردن کامل بحث user manger هست . در این
> روش سیستم شما در حالت پیش فرض کاملا مستقل از سیستم اصلی جنگو عمل می کند
> یعنی در حالتی شما این سیستم را پیاده سازی می کنید که می خواهیم مستقل از
> جنگو عمل کنیم و یک سیستم مدیریت کاربران کاملا سفارشی و مسقل داشته باشیم
> در این حالت شما نیم نگاهی به امنیت سایت هم داشته ای چون در این حالا
> کاربران عادی سایت از کابراران توسعه دهنده سایت مجزا می باشند که می تونه
> برای خودش یک ابزار برای گمراهی مهاجم ها به سایت باشه.
> البته مزایا های دیگه هم ممکن داشته باشه که در حال حاضر ذهن یاری نمی کنه
> (ساعت ۴ صبح هستش)
> معایبش هم به نظر من بحث بازنویسی دوباره کد هستش ....یعنی شما در این حالت
> نیاز دارید بسیاری از پیش فرض های جنگو را پیاده سازی کنید که در این حالت یک
> جورایی دوباره کاری های انجام شده ....که می تونه زمینه ساز خطا در برنامه
> باشه . و از طرفی بدلیل پیاده سازی های نادرست زمینه ورود مهاجم به سایت رو هم
> بدیم.که در این حالت برای بطرف کردن این کار می تونیم از روش های تست که در
> سیستم جنگو هست استفاده کنیم که در این حالت می تونیم از بروز خطا جلوگیری
> کنیم و سیستمون رو امن تر کنیم.
>
> خوب مدل های رو که من به عنوان پیش فرض اماده کردم رو اینجا می زارم
> برای این مدل ها من روش پروفایل استفاده کردم.
> برای روش abstarct هم می تونیم از لینک استفاده کنید. در اونجا یک مثال
> کامل از روش بیان شده است
>
>
> from django.db import models
> from django.contrib.auth.models import User
>
> class PugUsers(models.Model):
> user = models.OneToOneField(User)
> userInformation = models.CharField(max_length=500)
> userImage = models.CharField(max_length=50)
> userAbility = models.CharField(max_length=500)
>
>
>
> class PugFriends(models.Model):
> userF = models.ForeignKey(PugUsers, related_name="userF")
> userFriend = models.ForeignKey(PugUsers, related_name="user_Friend")
> friendshipDate = models.DateTimeField(auto_now=True)
>
>
> class PugMessage(models.Model):
> userSender = models.ForeignKey(PugUsers, related_name="user_sender")
> userReceiver = models.ForeignKey(PugUsers,
> related_name="user_receiver")
> mesSubject = models.CharField(max_length=100)
> mesBody = models.CharField(max_length=1000)
>
> خوب از اینجا به بعدش می تونیم از بین این دو روش انتخاب کنیم
> هر کدوم مزایا و معیابی داره تا جایی که ذهن یاری می کرد این رو بیان کردم
> از اینجا به بعد بچه ها کمک کنن ببینید چه مبنایی رو به عنوان شروع کار
> قرار بدهیم.
> از آقا نیما تشکر می کنم که به بنده یاد آوری کردن....خیلی ممنون
> فایل های پروژه رو براتون پیوست می کنم.
> منتظر نظر های شما هستیم
>
>
> _______________________________________________
> TehPUG mailing list
> Website: http://tehpug.ir
> List Address" TehPUG at python.org
> List Options: https://mail.python.org/mailman/listinfo/tehpug
>
>
>
> _______________________________________________
> TehPUG mailing list
> Website: http://tehpug.ir
> List Address" TehPUG at python.org
> List Options: https://mail.python.org/mailman/listinfo/tehpug
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tehpug/attachments/20140526/1d772988/attachment.html>
More information about the TehPUG
mailing list