خیلی وقت ها پیش میاد که ما حین انجام دادن پروژه های مختلف یا مطالعه کتاب ها به نکاتی بر میخوریم که به خودمون میگیم عههه چه جالب!! پس اینطوری بودش! یا مثلا اوه! مطمئنم این نکته یه روزی حتما به کارم میاد! اما دو روز بعد حتی یادمون نمیاد که همچین نکته ایی رو خونده باشیم.
من اخیرا به عنوان یه برنامه نویس بک اند که از فریمورک جنگو استفاده میکنه شروع کردم به مطالعه یه سری کتاب در این زمینه (که احتمال خیلی زیاد بعدا توی یه پست راجع بهشون مینویسم) و با با کلی نکته مواجه شدم که رعایت کردنشون میتونه باعث تمیزتر شدن کدهام، کمتر شدن حجم کدها و شناخت بهتر از ابزاری که دارم باهاش کار میکنم به اسم جنگو بشه. شاید خیلی از این نکات رو هم از قبل میدونستم اما به مرور زمان و استفاده نکردن فراموششون کرده باشم.
پس تصمیم گرفتم در یک سری پست به اسم "میکرونکات جنگو" برای خودم بنویسمشون تا هرچند وقت برگردم و مرورشون کنم و البته امیدوارم برای شما هم مفید باشه.
نکات مربوط به settings پروژه:
blog.apps.BlogConfig
تفاوت STATIC_URL ، STATIC_ROOT و STATICFILES_DIRS با همدیگه چیه؟
STATIC_ROOT:
ادرس path ایی که فایل های استاتیک داخل سرور production نگهداری میشن.
STATIC_URL:
اسم urlایی که از طریق اون میتونیم به فایل های استاتیک دسترسی داشته باشیم. مثلا
abcdefg.com/<static_url>/pic1.jpg
مشابه همین متغیرهارو ما برای فایل های media (فایل هایی که توسط کاربر اپلود میشن) داریم، یعنی MEDIA_URL و MEDIA_ROOT
برای استفاده از media ها در حالت development لازمه که فایل urls.py به صورت زیر ویرایش بشه:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
STATICFILES_DIRS:
وقتی که پروژه در فاز development هستش از این لیست برای نشون دادن path فایل های استاتیک استفاده میکنیم.
چرا STATICFILES_DIRS به صورت یک لیست تعریف شده؟
چون میتونیم فایل های استاتیک خودمون رو در جاها (یا بهتر بگم سرورها)ی مختلفی بزاریم و از آدرس های مختلفی اون هارو لود کنیم.
برای لود کردن فایل های استاتیک برروی سرور پروداکشن میتونیم از دستور زیر استفاده کنیم:
python manage.py collectstatics
app_directory > templates > same_app_name_directory > abc.html
پس وقتی لیست DIRS داخل templates در تنظیمات رو اپدیت میکنیم یعنی علاوه بر اون بیا این آدرسی که من میگم رو هم نگاه کن.
STATICFILES_FINDERS = [ "django.contrib.staticfiles.finders.FileSystemFinder", "django.contrib.staticfiles.finders.AppDirectoriesFinder", ]
اولین مورد میاد داخل STATICFILES_DIRS رو میگرده
دومین مورد میاد داخل پوشه هر app رو میگرده
DEBUG = False
SECURE_BROWSER_XSS_FILTER = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
من سروش ذاکر شبیری هستم و ممنونم که این مطلب رو مطالعه کردید. در صورتی که سوال یا پیشنهادی داشتید خوشحال میشم که اون رو از طریق راه های زیر با من در میون بزارید. :)
در صورتی که این مطلب رو دوست داشتید، می تونید ادامه این مطلب رو در این لینک مطالعه کنید.