خاطرات فنی من

یادداشتهایی در مورد تجربیات فنی من به عنوان یک مهندس نرم افزار برای مراجعه بعدی خودم و احتمالا دیگران.

سعی می کنم مطالب برای دیگران هم قابل استفاده باشند اما به دلیل کمی وقت نمی توانم زیاد نگران نگارش و چینش متن باشم

۵ مطلب در مرداد ۱۴۰۲ ثبت شده است

نکته مهم این است که django بر خلاف انتظار اصلا کاری به تگهای کامنت HTML ندارد و آنها را نادیده می گیرد، گویی آن تگها وجود ندارند ولی محتوای داخل آن تگها وجود دارد. فقط به تگهای {%  %} نگاه می کند. حتی اگر قسمتی از کد را داخل کامنت HTML گذاشته باشید دقیقا همان قسمت داخل کامنت را هم بدون توجه بررسی می کند و خروجی خودش را می سازد. البته که خروجی داخل کامنتهای HTML قرار می گیرد.

مثلا اگر شما در جای نامناسب چنین چیزی بنویسید پیام خطا دریافت خواهید کرد:

<!-- {% endif %} -->

پیام خطایی مشابه به این:

Invalid block tag on line 33: 'endif'

برای کامنت کردن چیزی از دید django باید از این تگها استفاده کنید:

{% comment %}

{% endcomment %}
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ مرداد ۰۲ ، ۱۱:۰۴
محسن

اگر در قسمت ادمین django یوزر درست کرده باشید دیده اید که می توان برای هر کاربر و هر گروه از کاربران روی هر کلاسی که داخل models تعریف کرده اید دسترسی تعریف کنید: هر کاربر می تواند دسترسی add , delete , change or view روی هر مدل تعریف شده داشته باشد.

یکی از روشهای اعمال دسترسی کاربران به داده ها همین است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ مرداد ۰۲ ، ۱۸:۳۵
محسن

یکی از پکیجهایی که می توان برای workflow در django از آن استفاده کرد، joeflow است.

خب، هنوز دقیقا نمی دانم که چطور می شود از آن استفاده کرد، اما فعلا برای ثبت در تاریخ می نویسم که چطور مثال خودش را روی ویندوز راه اندازی کردم:

 

 

  1. برای استفاده از joeflow باید celery را نصب داشته باشید و برای استفاده از celery باید redis را.
  2. pip install -U "celery[redis]"
  3. python3 -m pip install "joeflow[reversion,dramatiq,celery]"
  4. اما redis را نمی توانید مستقیما در windows اجرا کنید و به wsl نیاز دارید.
  5. باید wsl در windows features فعال باشد
  6. مطابق این دستورالعمل ، در cmd این دستور را اجرا کنید: wsl --install -d <DistroName>  (دفت کنید که DistroName نام لینوکسی است که می خواهید نصب کنید. مثلا Ubuntu)
  7. حالا داخل پنجره لینوکس، مطابق این دستورالعمل دستورات زیر را اجرا کنید تا redis نصب شود:  
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

sudo apt-get update
sudo apt-get install redis

و سپس این دستور برای اجرا کردن redis:

sudo service redis-server start

و این یکی برای تست کردن آن

redis-cli 
127.0.0.1:6379> ping
PONG

8.از این صفحه فایل نصبی graphviz را دانلود و نصب نمایید. در هنگام نصب حتما تیک بزنید که فایلهای اجرایی آن در PATH  قرار داده شود.

9.بعد از نصب، باید سیستم را ریست کنید تا یک چیزهایی اعمال شود.

حالا باید بتوانید به این نشانی http://127.0.0.1:8000/start/ (البته که مطابق مشخصات سرور خودتان) بروید و مثال joeflow را اجرا کنید.

این هم پروژه ای است که ما استفاده کردیم

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ مرداد ۰۲ ، ۰۹:۵۱
محسن

برای اینکه از روند کار و جزئیات 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 
۰ نظر موافقین ۰ مخالفین ۰ ۰۸ مرداد ۰۲ ، ۱۸:۰۹
محسن