جنگو (django) یکی از فریمورکهای پرکاربرد پایتون است که برای راهاندازی وباپلیکشنها با مصارف و موضوعات مختلف مورد استفاده قرار میگیرد.
شما میتوانید یکی از پلنهای سرویسهاست پایتون را که در هر دو لوکیشن ایران و آلمان ارائه میشود را خریداری کنید و پروژه جنگو خود را با استفاده از آموزش زیر راهاندازی کنید:
آموزش deploy کردن پروژه جنگو رویهاست
خطا در زمان راهاندازی پروژه
بسیاری از پروژههایی که بر روی لوکال به درستی کار میکنند، بعد از انتقال به هاست ممکن است با خطا مواجه شوند و اجرا نشوند.
اولین مورد که باعث ایجاد خطا در بسیاری از پروژههای راهاندازی شده بر رویهاست میشود، حساس بودن به حروف کوچک و بزرگ کدهای نوشته شده بر روی هاست است.
کوچک و بزرگ حروف کدها، بر روی محیط لوکال اختلالی در پروژهایجاد نمیکند، اما بر روی هاست این مورد باعث خطا میشود.
به صورت کلی، در هر زمان که در پروژههای پایتون با خطا مواجه شدید با استفادهاز آموزش زیر میتوانید خطای پروژه را مشاهده و طبق لاگ نمایش داده شده، خطا را رفع کنید:
مشاهده لاگ پایتون
ناقص بودن فایل requirements.txt برای نصب پکیجها
بعد از تکمیل پروژه بر روی لوکال و یا بر رویهاست، با زدن دستور python -m pip freeze > requirements.txt در ترمینال بعد از دستور سورس پروژه، فایل requirements ایجاد میشود که در زمان راهاندازیهای بعدی مورد استفاده قرار میگیرد.
در صورتی که بعد از ایجاد این فایل، تغییراتی در ورژن پکیجهای استفاده شده در پروژه وجود داشت باید در این فایل هم اصلاح شود و یا اگر در روند توسعه پروژه ، پکیج های دیگری اضافه شد باید به این فایل اضافه شود.
البته بهتر است با زدن دستور در ترمینال، مجدد این فایل تهیه شود.
تناسب بین ورژن پایتون انتخاب شده بر رویهاست با نسخههای پکیجهای پروژه
پروژه شما بر روی لوکال ممکن است با نسخه خاصی از پایتون، راهاندازی شده باشد و پکیجهای نصب شده نیز بر اساس همان نسخه پایتون باشد.
برای ایجاد پروژه بر روی هاست هم باید همان ورژن پایتون انتخاب شود تا پروژه بر روی هاست بدون مشکل راهاندازی و اجرا شود.
برای نسخههای مختلف پایتون، نسخههای مختلف جنگو وجود دارد.
Django version | Python versions |
---|---|
3.2 | 3.6, 3.7, 3.8, 3.9, 3.10 (added in 3.2.9) |
4.0 | 3.8, 3.9, 3.10 |
4.1 | 3.8, 3.9, 3.10, 3.11 (added in 4.1.3) |
4.2 | 3.8, 3.9, 3.10, 3.11, 3.12 (added in 4.2.8) |
5.0 | 3.10, 3.11, 3.12 |
5.1 | 3.10, 3.11, 3.12 (added in 5.1.3) |
اشتباه بودن کد فایل passenger_wsgi.py مربوط به پروژه
بعد از نصب django و ایجاد پروژه، فایلی به نام passenger_wsgi.py در فولدر پروژه ایجاد میشود که حاوی چند خط کد میباشد.
در این فایل باید کدهای موجود حذف شود و کد زیر اضافه شود.
from mainapp.wsgi import application
mainapp در کد بالا نام پروژه اصلی شماست. شما باید فولدری با این نام در پروژه داشته باشید.
فایل settings.py پروژه داخل این فولدر وجود دارد.
در اکثر موراد، زمانی که پروژه بر روی لوکال ایجاد و توسعه داده میشود و سیستم عامل شما اگر ویندوزی باشد به حروف بزرگ و کوچک دقت نمی کنید اما در سیستم عامل لینوکس که هاست های ما از این نوع سیستم عامل است به حروف بزرگ و کوچک حساس است در این صورت باید حتما به این نکته دقت داشته باشید و نام پروژه رو بر همان اساس وارد کنید.
فعال کردن دباگ جنگو
درحالت پیشفرض بعد از نصب جنگو، این مقدار برابر True و فعال است. حتما توجه داشته باشید کهاین مقدار با حروف بزرگ در ابتدای کلمه True یا False میباشد.
در صورتی کهاین مقدار به اشتباه true یا false (با حرف اول کوچک) وارد شود عملا دباگ غیرفعال شده و با خطای 500 مواجه میشویم.
باید این نکته را مد نظر داشته باشید که برای پروژههای فعال، همیشه باید مقدار دباگ False باشد چون علاوه بر اینکه فعال بودن دباگ باعث کاهش سرعت اجرای پروژه میشود، اگر پروژه خطایی داشته باشد جزئیات و اطلاعات زیادی در صفحهای که خطا دارد نمایش داده میشود که امنیت سایت و پروژه را کاهش میدهد.
البته در زمانی که دباگ غیرفعال باشد، جنگو میتواند با اضافه کردن تنظیماتی در فایل settings.py ، خطاهای سرور و پروژه را به ایمیل ادمینهای جنگو ارسال کند و از این طریق ادمین پروژه میتواند خطاهای پروژه را بررسی و رفع کند.
هممینطور در صورت وجود خطای 404 صفحات، امکان ارسال ایمیل برای ادمین وب سایت وجود دارد.
در این صفحهاز مستندات جنگو در مورد نحوه گزارش خطاهای جنگو به صورت مفصل توضیح داده شده است.
خطای DisallowedHost در پروژههای جنگو
بعد از نصب جنگو، زمانی که در فایل settings.py برای گزینه ALLOWED_HOSTS هیچ مقداری تعریف نشده باشد این خطا نمایش داده میشود.
برای این گزینه باید نام دامنه یا سابدامنه مربوط به پروژه، وارد شود و یا از علامت * به معنای تمام مقادیر استفاده شود تا این ارور رفع شود.
نکته : برای مشاهده تغییرات در پروژه پایتون، پروژه باید رستارت شود.
نکته : تمام دستورات در پروژههای پایتونی باید بعد از زدن دستور سورس در ترمینال وارد و اجرا شوند.
تعریف STATIC_ROOT در پروژه
فایلهای استاتیک، فایلهایی هستند که یک بار ایجاد میشوند و در طول پروژه نیازی به ایجاد مجدد و یا تغییر ندارند مثل فونتها و تصاویر، استایل و فایلهای جاوااسکریپت.
این فایلهای استاتیک با دستور python manage.py collectstatic بعد از زدن دستور سورس پروژه در ترمینال ایجاد میشوند و در فولدر تعریف شده قرار میگیرند.
اگر مقدار در فایل settings.py تعریف نشده باشد خطای زیر در ترمینال نمایش داده میشود:
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
استاتیک روت را به دو شکل میتوانیم در فایل settings.py اضافه کنیم.
در روش اول این کد را اضافه میکنیم.
import os
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
در روش دوم ، برای تعریف استاتیک روت، میتوان به صورت مطلق آدرس دهی کرد که در صورتی که پروژه بر روی دامنهاصلیهاست باشد در فولدر public_html قرار میگیرد. برای دامنههای ادان شده و یا سابدامنهها، مسیر فولدر آن قرار میگیرد.
برای ساختن استاتیک روت نیاز به پیدا کردن نام home directory داریم که در سایدبار سمت راست سی پنل نمایش داده میشود.
مسیر استاتیک روت به شکل زیر به دست میآید و در فایل تنظیمات پروژه جنگو وارد میشود:
STATIC_ROOT = '/home/parswebserver/public_html/static'
* توجه داشته باشید برای سرویس هاست شما نام یوزر سی پنل متفاوت است و باید به جای parswebserver
نام یوزر سی پنل شما باشد.
* برای دامنههای ادان و یا سابدامنهها، به جای public_html
باید نام فولدر ادان دامنه و یا سابدامنه قرار بگیرد.
* اگر تصاویر مربوط به پروژه شما نمایش داده نمیشود و یا استایل پروژه لود نمیشود باید فولدر static , media موجود در فولدر پروژه را به فولدر public_html و یا فولدر دامنه ادان شده و یا سابدامنه منتقل کنید.
عدم لود استایل ادمین جنگو
لینک پیش فرض ورود به محیط ادمین جنگو به آدرس yourdomain.com/admin میباشد.
* به جای yourdomain.com نام دامنه و یا سابدامنه پروژه شماست.
اگر صفحه لاگین برای شما به درستی لود نمیشود و فونتها و فرم و ورودیها به درستی نمایش داده نمیشود نشانه این است که استایل ادمین به خوبی لود نشده است.
برای رفع مشکل عودم لود استایل برای ادمین چنگو میتوانید آموزش زیر را مشاهده بفرمایید:
حل بهم ریختگی فایلهای css ادمین جنگو
خطای جنگو Incorrect string value
اگر بخواهیم در یک جدول و در یکی از ستونهای آن، اطلاعات را به صورت فارسی وارد کنیم، ممکن است به دلیل تنظیم نبودن کولیشن بر روی utf8mb4_persian این خطا نمایش داده شود.
در پست زیر برای رفع این مشکل به صورت کامل توضیح داده شد:
رفع خطای جنگو Incorrect string value
خطای Specified key was too long در پروژههای جنگو
از جمله خطاهایی است که بر روی دیتابیسهایی از نوع mysql ایجاد میشود.
در پروژههایی با دیتابیس ماریادیبی با این خطا مواجه نخواهیم شد.
در زمان مایگریت کردن پروژه جنگو بر روی هاستهایی که از دیتابیس mysql استفاده میکنند و engine database بر روی myisam قرار دارد، ممکن است با خطای زیر مواجه شوید :
django.db.utils.OperationalError: (1071, ‘Specified key was too long; max key length is 1000 bytes’)
در پست آموزشی زیر در مورد نحوه رفع کامل این اررو توضیح دادیم:
ارور Specified key was too long در جنگو
اسلاگ فارسی در جنگو
یکی از مهمترین و بزرگترین چالشها در پروژههای جنگو، استفادهاز اسلاگ فارسی در پستها و مطالب جنگو است.
با استفادهاز آموزش زیر میتوانیم از اسلاگ فارسی در لینک مطالب و یا نوشتههای جنگو استفاده کنیم:
در این پست، به خطاهای رایج در پروژههای جنگو پرداختیم.
البته ممکن است شما در زمان راهاندازی پروژه جنگو بر رویهاست، با خطاهای دیگر مواجه شوید که میتوانید متن خطا و یا اسکرین شات خطا از طریق تیکت ارسال کنید تا همکاران بخش پشتیبانی پارس وب سرور در اسرع وقت پروژه شما را بررسی و برای رفع خطا، راهنماییهای لازم را برای شما ارسال کنند. (ارسال تیکت)