Muallif
July 13, 2024
155Djangoda 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.
Demak birinchi django projectimizda static filelarni qanday sozlash kerakligini bir nechta bosqichlarda ko'rib chiqamiz.
settings.py url.py
qo'shish
settings.py
file ichiga STATIC_URL
ni qo'shish kerak. Masalan: STATIC_URL = 'static/'
STATIC_ROOT
yoki STATICFILES_DIRS
ni larni STATIC_URL
qo'shish kerak. Bu ikkalasini farqi nimada? Qisqa qilib aytgan STATICFILES_DIRS
DEBUG=False
bo'lgan paytda, STATIC_ROOT
esa DEBUG=True
bo'lgan paytda ishlaydi. Masalan:
<code>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 va DEBUG=False
bo'lganda STATICFILES_DIRS
ni, aks holda STATIC_ROOT
ni ishlat deb shart berdikurls.py
ni ichiga static url larni tanitishimiz kerak. Buning uchun urlpatterns
ga STATIC_URL
va STATICFILES_DIRS
ni qo'shib qo'yamiz. Namunaviy kod:
<code> 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)
template
da static filelarni to'g'ri ko'rsatishtemplatelarda
ishlatish
{% load static %}
ni html file ling eng yuqorisiga agar {% extends 'base.html' %}
bo'lsa undan pastiga qo'shib qo'ying.<img src="./rasmlar/rasm.png'" alt="">
Biz esa buni quyidagi holatga ko'chirishimiz kerak<img src="{% static 'images/right-arrow.png' %}" alt="">
Mana endi static filelar ishlaydiAgar 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
.
STATIC_ROOT
borligiga ishinch hosil qiling. Undan keyin esa python manage.py collectstatic
buyrug'ini bering.python manage.py runserver --insecure
buyrug'i orqali ishlatingAgar maqola yoqqan bo'lsa telegram kanalimizga a'zi bo'ling malikovdev Xato kamchiliklar bo'lsa tuzatib Pull Request bersangiz xursand bo'lamiz. Rahmat