Djangoda static filelar ni ishlatishda kelib chiqadigan muammolarga yechim
Djangoda static filelarning ishlamaslik muammosi
Assalomu alekum. Ushbu maqolada static filelarning ishlamaslik muammosini bartaraf etamiz.
Ushbu maqolaning namunamiy kodlarini ushbu sahifa dan topishiz mumkin. Qani unda boshladik
Demak maqolani 2 qismga bo’lamiz Local va Production. Ya’ni static filelarning local serverimizda va deploy qigandan keyingi ishlamaslik sabablarini ko’rib chiqamiz.
Local
Demak birinchi django projectimizda static filelarni qanday sozlash kerakligini bir nechta bosqichlarda ko’rib chiqamiz.
- Static ni
settings.py url.py
qo’shishsettings.py
file ichigaSTATIC_URL
ni qo’shish kerak. Masalan:STATIC_URL = 'static/'
STATIC_ROOT
yokiSTATICFILES_DIRS
ni larniSTATIC_URL
qo’shish kerak. Bu ikkalasini farqi nimada? Qisqa qilib aytganSTATICFILES_DIRS
DEBUG=False
bo’lgan paytda,STATIC_ROOT
esaDEBUG=True
bo’lgan paytda ishlaydi. Masalan:STATIC_URL = 'static/' if DEBUG == True: STATICFILES_DIRS = (BASE_DIR / 'static',) else: STATIC_ROOT = BASE_DIR / 'static_root'
Bu yerda menda static va static_root degan papkalar asosiy directory da joylashganligi uchun
BASE_DIR
qildim vaDEBUG=False
bo’lgandaSTATICFILES_DIRS
ni, aks holdaSTATIC_ROOT
ni ishlat deb shart berdik- Asosiy
urls.py
ni ichiga static url larni tanitishimiz kerak. Buning uchunurlpatterns
gaSTATIC_URL
vaSTATICFILES_DIRS
ni qo’shib qo’yamiz. Namunaviy kod:from django.conf import settings # setting.py ni import qildik from django.conf.urls.static import static urlpatterns = [ path("admin/", admin.site.urls), ] urlpatterns += static(settings.STATIC_URL, document_root=settings.STATICFILES_DIRS)
Mana barchasini sozlab oldik endi keyingi qiladigan ishimiz
template
da static filelarni to’g’ri ko’rsatish - Static ni
templatelarda
ishlatish- Har doim
{% load static %}
ni html file ling eng yuqorisiga agar{% extends 'base.html' %}
bo’lsa undan pastiga qo’shib qo’ying. - Endi esa qanday static file ni to’g’ri ko’rsatishni ko’rib o’tamiz. Odatda static filedan quyidagi holatda ma’lumot olinadi:
Biz esa buni quyidagi holatga ko’chirishimiz kerak
Mana endi static filelar ishlaydi
- Har doim
Production
Endi esa Django project ni deploy qigandan keyin ishlamaslik holatlarini ko’rib chiqamiz.
Agar DEBUG=False
qildizmi szning static filelaringiz ishlamaydi. Buning asosiy sababi esa endi django szning static filelarizni saqlamaydi. Chunki siz production leveldasiz va static filelarni server da saqlashiz kerak. Masalan whitenoise
yoki NGINX
.
- Eng asosiysi
STATIC_ROOT
borligiga ishinch hosil qiling. Undan keyin esapython manage.py collectstatic
buyrug’ini bering. - Keyingi bosqich esa static filelarizni saqlamoqchi bo’gan serverlarizning sozlamalarini sozlab chiqish. Bular siz qaysi server ni ishlatayotganizga bog’liq
Agarda DEBUG=False qilgan holatda local serverizda static filelarni ishlashini xohlasayiz 1-bosqich ni bajaring va keyin python manage.py runserver --insecure
buyrug’i orqali ishlating
So’ngi so’zi
Agar maqola yoqqan bo’lsa telegram kanalimizga a’zi bo’ling malikovdev Xato kamchiliklar bo’lsa tuzatib Pull Request bersangiz xursand bo’lamiz. Rahmat
Web Dasturlash
Djangoda static filelar ni ishlatishda kelib chiqadigan muammolarga yechim