رفع خطاهای رایج در پروژه های جنگو
پروژههایی که در محیط لوکال بهخوبی اجرا میشوند، ممکن است پس از انتقال به هاست با مشکلاتی مواجه شده و اجرا نگردند. به صورت کلی، هر زمان در پروژههای پایتون با خطا مواجه شدید پیشنهاد می شود در اولین گام با استفاده از آموزش (مشاهده لاگ پایتون) خطای پروژه را مشاهده و طبق لاگ نمایش داده شده، خطا را رفع کنید. در ادامه به بررسی رایج ترین خطاها هنگام راه اندازی جنگو در هاست پرداخته شده است.
1. حساسیت هاست به حروف بزرگ در کدها:
یکی از اصلیترین دلایل خطا در پروژههای منتقل شده به هاست، حساسیت به حروف کوچک و بزرگ در کدها است. این موضوع در محیط لوکال مشکلی ایجاد نمیکند اما در هاست، بهدلیل تفاوت در ساختار فایلها و سیستمعامل، میتواند منجر به خطا شود.
2. ناقص بودن فایل requirements.txt برای نصب پکیجها
همیشه پس از تکمیل پروژه به یاد داشته باشید آخرین تغییرات پکیج های مورد نیاز را در فایل requirements.txt ذخیره کنید چرا که نقص یا عدم تطابق نسخه پکیج های نصب شده می تواند حین انتقال پروژه به هاست مشکل ساز شود. در خصوص لیست پکیج های موجود در فایل requirements و آشنایی با پرکاربردترین دستورهای pip، می توانید آموزش (آشنایی با pip در پایتون و بررسی دستورات رایج آن) را مطالعه نمایید.
3. 500 internal server error:
به طور پیشفرض، پس از نصب جنگو، مقدار DEBUG روی True تنظیم و فعال است. اگر این مقدار به اشتباه به صورت true یا false (با حروف کوچک) نوشته شود، قابلیت دیباگ غیرفعال شده و باعث بروز خطای 500 خواهد شد.
4. خطای DisallowedHost:
پس از نصب جنگو، اگر در فایل settings.py برای گزینه ALLOWED_HOSTS مقداری تعریف نشده باشد، خطای مذکور ظاهر میشود. برای رفع این مشکل می بایست متغیر ALLOWED_HOSTS را در فایل settings.py با دامنهای که استفاده میکنید مقدار دهی کنید.
پس از نصب جنگو، اگر در فایل settings.py برای گزینه ALLOWED_HOSTS مقداری تعریف نشده باشد، خطای مذکور ظاهر میشود. برای رفع این مشکل می بایست متغیر ALLOWED_HOSTS را در فایل settings.py با دامنهای که استفاده میکنید مقدار دهی کنید.
ALLOWED_HOSTS = ['example.com', 'www.example.com']
لازم به ذکر است که example.com نام دامنه مد نظر شما خواهد بود.
5. خطای مربوط به تعریف فایلهای static و media:
در صورتی که فایل های static معرفی نشوند ممکن است خطای زیر را مشاهده نمایید یا با بهم ریختگی صفحات و عدم نمایش صحیح فونت ها و ... مواجه شوید. برای رفع مشکل می بایست آموزش مربوط به معرفی آنها را با عنوان (پیکربندی فایل های Static و Media) مطالعه نمایید.
raise ImproperlyConfigured(
django.core.exceptions.ImproperlyConfigured: You're using the staticfiles app without having set the STATIC_ROOT setting to a filesystem path.
6. خطای Incorrect string value:
خطای "Incorrect string value" در جنگو زمانی رخ میدهد که داده وارد شده داخل جدول، با تنظیمات charset یا collation آن جدول سازگار نیست. معمولاً این مشکل به دلیل استفاده از کاراکترهایی همچون ایموجی یا حروف فارسی رخ می دهد که با تنظیمات فعلی جداول پایگاه داده تطابق ندارند. برای رفع این خطا، میتوانید آموزش "رفع ارور Incorrect string value در جنگو" را مطالعه نمایید.
7. خطای Specified key was too long در پروژههای جنگو
عمولاً زمانی رخ می دهد که شما بخواهید از یک کلید (Key) برای ایندکس کردن فیلدی خاص در پایگاه داده استفاده کنید و طول این کلید از محدودیتهایی که پایگاه داده (مانند MySQL یا PostgreSQL) برای طول کلید ایندکس در نظر گرفته است، بیشتر باشد. خطا مذکور اغلب زمانی رخ میدهد که از پایگاه داده MySQL استفاده میکنید و برای رفع آن نیز می توانید آموزش (خطای Specified key was too long در جنگو) را مطالعه نمایید.
8. خطای CORS در جنگو
خطایCORS No Allow Credentials یا CORS Missing Allow Header در پروژههای جنگو زمانی رخ می دهد که درخواستی از یک منبع (مانند جاوا اسکریپت در مرورگر) به سرور جنگو ارسال شود و سرور اجازه ندهد که درخواستها از دامنههای مختلف انجام شوند. این خطا به دلایل امنیتی توسط مرورگر ایجاد میگردد.
برای رفع این خطا نیز می توانید پکیج مربوطه با نام django-cors-headers را در پروژه و به کمک دستورات pip نصب نموده و سپس موارد زیر را نیز در فایل settings.py پروژه خود اضافه نمایید.
CORS_ALLOWED_ORIGINS = [
"https://example.com",
]
CORS_ALLOW_METHODS = [
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT",
]
"https://example.com",
]
CORS_ALLOW_METHODS = [
"DELETE",
"GET",
"OPTIONS",
"PATCH",
"POST",
"PUT",
]
توجه نمایید که پس از اعمال تغییرات هر بخش برای مشاهده نتیجه در پروژه پایتون، آن را ریستارت کنید.