بطور عادی وقتی یک فیلد در فرمهای django ضروری باشد و کاربر آن را پر نکند با این پیام مواجه می شود: Please fill out this field یا اگر یک گزینه چند انتخابی باشد: Please select an item in the list
بطور عادی وقتی یک فیلد در فرمهای django ضروری باشد و کاربر آن را پر نکند با این پیام مواجه می شود: Please fill out this field یا اگر یک گزینه چند انتخابی باشد: Please select an item in the list
همانطور که می دانید Active Directory از پروتکل LDAP استفاده می کند. بنابراین چیزی که ما می خواهیم درواقع LDAP Authentication in Django است.
برای کار با django زیرساختهایی لازم است که چون دیر به دیر از آن استفاده می کنیم فراموش می شوند.
به همین خاطر آنها را اینجا یادداشت می کنم، برای ارجاعات بعدی
نکته مهم این است که django بر خلاف انتظار اصلا کاری به تگهای کامنت HTML ندارد و آنها را نادیده می گیرد، گویی آن تگها وجود ندارند ولی محتوای داخل آن تگها وجود دارد. فقط به تگهای {% %} نگاه می کند. حتی اگر قسمتی از کد را داخل کامنت HTML گذاشته باشید دقیقا همان قسمت داخل کامنت را هم بدون توجه بررسی می کند و خروجی خودش را می سازد. البته که خروجی داخل کامنتهای HTML قرار می گیرد.
مثلا اگر شما در جای نامناسب چنین چیزی بنویسید پیام خطا دریافت خواهید کرد:
<!-- {% endif %} -->
پیام خطایی مشابه به این:
Invalid block tag on line 33: 'endif'
برای کامنت کردن چیزی از دید django باید از این تگها استفاده کنید:
{% comment %} {% endcomment %}
اگر در قسمت ادمین django یوزر درست کرده باشید دیده اید که می توان برای هر کاربر و هر گروه از کاربران روی هر کلاسی که داخل models تعریف کرده اید دسترسی تعریف کنید: هر کاربر می تواند دسترسی add , delete , change or view روی هر مدل تعریف شده داشته باشد.
یکی از روشهای اعمال دسترسی کاربران به داده ها همین است.
برای اینکه از روند کار و جزئیات Class Based Views بیشتر سر در بیاورید بد نیست به این سایتها نگاهی بیاندازید:
Classy Class Based View site : https://ccbv.co.uk/
CBV Diagrams pages : https://www.brennantymrak.com/articles/django-class-based-views-diagrams.html
بهترین جواب این است که برای این روزها باید source control داشته باشید و براحتی همه فایلهای حذف شده را بازگردانید.
اما حالا بدون source control چه کنیم؟
کاری که ما در یک پروژه آزمایشی انجام دادیم این بود. البته که مسوولیت هر کاری با خود شماست:
مطابق این لینک اول باید همه سابقه migration را حذف کنید و از نو بسازید:
a. go to python shell python manage.py shell
b. type from django.db.migrations.recorder import MigrationRecorder
c. type MigrationRecorder.Migration.objects.all().delete()
برای ساخت migrations جدید:
./manage.py makemigrations <myapp>
و در نهایت:
python manage.py migrate --fake