راهنمای رفع خطاهای رایج در پروژه‌های جنگو

راهنمای رفع خطاهای رایج در پروژه‌های جنگو
12 - آذر - 1403

جنگو (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 مواجه ‌‌می‌شویم.

error 500

باید این نکته را مد نظر داشته باشید که برای پروژه‌های فعال، همیشه باید مقدار دباگ False باشد چون علاوه بر اینکه فعال بودن دباگ باعث کاهش سرعت اجرای پروژه ‌‌می‌شود، اگر پروژه خطایی داشته باشد جزئیات و اطلاعات زیادی در صفحه‌ای که خطا دارد نمایش داده ‌‌می‌شود که‌ امنیت سایت و پروژه را کاهش ‌‌می‌دهد.

البته در زمانی که دباگ غیرفعال باشد، جنگو ‌‌می‌تواند با اضافه کردن تنظیماتی در فایل settings.py ، خطاهای سرور و پروژه را به‌ ایمیل ادمین‌های جنگو ارسال کند و از این طریق ادمین پروژه ‌‌می‌تواند خطاهای پروژه را بررسی و رفع کند.

هممینطور در صورت وجود خطای 404  صفحات، امکان ارسال ایمیل برای ادمین وب سایت وجود دارد.

در این صفحه‌از مستندات جنگو در مورد نحوه گزارش خطاهای جنگو به صورت مفصل توضیح داده شده‌ است.

 

خطای DisallowedHost  در پروژه‌‌های جنگو

بعد از نصب جنگو، زمانی که در فایل settings.py برای گزینه ALLOWED_HOSTS هیچ مقداری تعریف نشده باشد این خطا نمایش داده ‌‌می‌شود.

برای این گزینه باید نام دامنه یا سابدامنه مربوط به پروژه، وارد شود و یا از علامت * به معنای تمام مقادیر استفاده شود تا این ارور رفع شود.

DisallowedHost error

نکته : برای مشاهده تغییرات در پروژه پایتون، پروژه باید رستارت شود.

نکته : تمام دستورات در پروژه‌های پایتونی باید بعد از زدن دستور سورس در ترمینال وارد و اجرا شوند.

دستور سورس پروژه

تعریف 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 داریم که در سایدبار سمت راست سی پنل نمایش داده ‌‌می‌شود.

 home directory cpanel

مسیر استاتیک روت به شکل زیر به دست ‌‌می‌آید و در فایل تنظیمات پروژه جنگو وارد ‌‌می‌شود:

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 در جنگو

 

اسلاگ فارسی در جنگو

یکی از مهم‌ترین و بزرگ‌ترین چالش‌ها در پروژه‌های جنگو، استفاده‌از اسلاگ فارسی در پست‌ها و مطالب جنگو است.

با استفاده‌از آموزش زیر می‌توانیم از اسلاگ فارسی در لینک مطالب و یا نوشته‌های جنگو استفاده کنیم:

اسلاگ فارسی در جنگو

 

در این پست، به خطاهای رایج در پروژه‌های جنگو پرداختیم.
البته ممکن است شما در زمان راه‌اندازی پروژه جنگو بر روی‌‌هاست، با خطاهای دیگر مواجه شوید که ‌‌می‌توانید متن خطا و یا اسکرین شات خطا از طریق تیکت ارسال کنید تا همکاران بخش پشتیبانی پارس وب سرور در اسرع وقت پروژه شما را بررسی و برای رفع خطا، راهنمایی‌های لازم را برای شما ارسال کنند. (ارسال تیکت)

4.9/5 - (18 امتیاز)
دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

[bws_google_captcha]