Takip Edin

element image element image element image element image

Django HTML Düzenleme Scripti

Anasayfa Bloglar Django HTML Düzenleme Scripti
Django HTML Düzenleme Scripti image

Selam dost !

günlerden bir gün bir mantra-man adında bir developer vardı.
Her gün elinde onlarca HTML dosyası, ve her seferinde aynı işi artık yapmaktan bıkmış usanmıştı :/ Ayrıca mantra-man bir mühendis olduğu için hemen düşünmeye başladı ne yapabilirim diye

 

<link rel="stylesheet" href="../assets/css/style.css">

Sonra düşünüyordu:
“Ben neden hâlâ bunları tek tek {% static %} ile değiştirmek zorunda kalıyorum?
Django’da bunun otomatiği yok mu abi yada ben niye yazmıyorum ki ?” diye.

 

Ve işte o gün, sabrın son damlası taştı. Developer, mac inin başına geçti, kahvesinden bir yudum aldı ve şöyle dedi:
“Artık yeter! Ben bu işi Python’a yaptırırım ulan!”

 


Django Static Yolculuğu

 

Amaç basitti:

  • ../assets/ ya da assets/ gibi yolları bulmak,
  • hepsini otomatik olarak şu hale çevirmek:
<link rel="stylesheet" href="{% static 'css/style' %}">

Üstelik sadece CSS değil…
js, png, jpg, jpeg, ico, svg hatta srcset ve inline style="background:url(...)" bile dönüştürülecekti. (Merak etmeyin istenmeyen uzantıları engelleyebiliyoruz onlara dokunmuyor 😎)

Mantra-Man, kollarını sıvadı ve bir script yazmaya koyuldu.


Kahramanımızın Script’i

Aşağıdaki kod, tüm işi üstleniyordu:

import argparse
import re
from pathlib import Path
from bs4 import BeautifulSoup

EXT_WHITELIST = (".js", ".css", ".png", ".jpg", ".jpeg", ".ico", ".svg", ".webp")

def to_static(url, prefix="assets/"):
    rel = url.replace(prefix, "").lstrip("./")
    return "{% static '" + rel + "' %}"

def process_html(file_in, file_out, prefix="assets/"):
    html = Path(file_in).read_text(encoding="utf-8")
    soup = BeautifulSoup(html, "html5lib")

    for tag in soup.find_all(True):
        for attr in ["href", "src", "poster", "srcset", "data-src"]:
            if tag.has_attr(attr):
                val = tag[attr]
                if isinstance(val, str) and val.endswith(EXT_WHITELIST):
                    tag[attr] = to_static(val, prefix)

    out_html = str(soup)
    if "{% load static %}" not in out_html:
        out_html = "{% load static %}\n" + out_html

    Path(file_out).parent.mkdir(parents=True, exist_ok=True)
    Path(file_out).write_text(out_html, encoding="utf-8")

if __name__ == "__main__":
    parser = argparse.ArgumentParser()
    parser.add_argument("--input", required=True)
    parser.add_argument("--output", required=True)
    parser.add_argument("--prefix", default="assets/")
    args = parser.parse_args()

    process_html(args.input, args.output, args.prefix)
    print("Tamamdır! Django static yolları başarıyla dönüştürüldü.")

 

Örnek Çalıştırma Komutu:

python convert_to_django_static.py \ --input ./templates_raw \ --output ./templates_converted \ --prefix "../assets/" 


Mutlu Son

 

Developer artık tek tek uğraşmıyordu.
Bir klasör dolusu HTML dosyasını script’e veriyor, çıktıları prettify edilmiş, {% static %} hazır şekilde geri alıyordu.

 

Kahramanımızın yüzünde hafif bir gülümseme belirdi:
“Artık zamanımı HTML’le değil, kod yazmakla harcayacağım.”

 

Ve o günden sonra, tüm proje dosyaları Django ile uyumlu, düzenli ve tertemizdi. 🎉 

Artık sadece kod yazmaya odaklanmıştı dilediği gibi yeni projelere başlayıp onları hemen aktif edebiliyordu. Aslında çok fazla zaman kazanmıştı ama daha haberi yoktu fakat senin var o yüzden sen bunu istiyorsan modifiye et daha güzelini yap ve dilediğin gibi kullan dost ☺️


 

👉 Sen de bu script’i çalıştırıp kendi dosyalarını dönüştürebilirsin.
Belki bir gün, senin de hikâyen aynı olur. Sağlıcakla kal dost 

SubLogoBlog Yazılarımız

Blog

"Yeni Makalelerle İlham Alın"

Django Mülakat Soruları

Django Mülakat Soruları

Django mülakat soruları için 5 gerçek case: ORM performansı, transaction & race condition, Celery idempotensi, caching ve prod güvenliği.

Daha Fazla
Python Requests Session Kullanımı

Python Requests Session Kullanımı

Python requests kütüphanesinde Session nesnesinin get yerine nasıl ve neden kullanılacağını öğrenin. Daha hızlı, güvenli ve verimli HTTP istekleri için Ses

Daha Fazla
Django HTML Düzenleme Scripti

Django HTML Düzenleme Scripti

Django projelerinde HTML dosyalarındaki asset yollarını otomatik olarak {% static %} etiketine çeviren Python scripti. Zaman kazandıran pratik çözüm.

Daha Fazla

Teknoloji Çözümleriyle Dijital Gücünüzü Artırın

Web geliştirme, oyun geliştirme, SEO ve veritabanı çözümleri için uzman ekibimizle şimdi tanışın.