[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