Tutorial ini adalah tutorial lanjutan dari bagian 1 yang kemarin telah kita selesasikan.
Langsung saja, let’s get started.
Jika sebelumnya kita telah membuat sebuah app dan membuat & routing halaman homepage pada django, kali ini kita akan mencob menerapan styling / menggunakan static file pada django untuk membuat tampilan web / blog kita menjadi lebih baik.
Requirements:
Buatlah folder static di dalam directory project kita sebelumnya (tutor
).
tutor/
│
├── django_blog/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
│
├── env/
│
├── home
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
│
├── static/ #static folder untuk staticfiles
│
│
└── manage.py
Static
folder pada django adalah folder yang berisi file-file static yang kita gunakan untuk styling, di antaranya: javascript
, css
, icon
/ svg
, jquery
and stuff.
Kita akan menggunakan template yang yang telah tersedia.
Dalam folder template yang akan kita gunakan memiliki beberapa file, di antaranya:
├── js # berisi javascript untuk template yang akan digunakan
├── css # berisi file css yang akan digunakan
├── img # berisi image / gambar
└── fonts # berisi fonts / icon yang akan digunakan
Pindahkan ke empat folder tersebut ke dalam static
folder pada project kita.
Sehingga akan memliki struktur seperti di bawah ini:
└── static/
├── js
├── css
├── img
└── fonts
Langkah selanjutnya adalah kita akan merubah template yang sebelumnya kita gunakan,
Buatlah folder template
baru di dalam aplikasis home
milik kita.
Di dalam folder tersebut, buatlah file baru bernama home.html
.
home/
└── templates/
└── home.html
Lalu kita akan berpindah ke folder project kita django_blog/templates
dan rubahlah file bernama home.html
menjadi base.html
.
Copy dan paste pada bagian <head>
yang ada pada file index.html
pada folder template / tema yang akan kita gunakan sebelumnya ke dalam file base.html
yang kita miliki.
file base.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Jangan lupa untuk menambahkan load static pada file base.html kita -->
{% load static %}
<meta charset="utf-8">
<title>FORCE Bootstrap 4 Website Template</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<link href="lib/animate/animate.min.css" rel="stylesheet">
<link href="lib/ionicons/css/ionicons.min.css" rel="stylesheet">
<link href="lib/owlcarousel/assets/owl.carousel.min.css" rel="stylesheet">
<!-- Main Stylesheet File -->
<link href="css/style.css" rel="stylesheet">
</head>
<body id="body">
{% block content %}
<!-- main content -->
{% endblock %}
<a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
<!-- JavaScript -->
<script src="lib/jquery/jquery.min.js"></script>
<script src="lib/jquery/jquery-migrate.min.js"></script>
</body>
</html>
Isi dari file di atas telah terpotong, untuk versi lengkap bisa didownload melalui github
Selanjutnya kita edit file home.html
yang ada pada aplikasi home
kita, paste bagian body
yang kita dapat dari file index.html
file home.html
:
{% extends "base.html" %}
<!-- Jangan lupa untuk menambahkan load static pada file base.html kita -->
{% load static %}
{% block content %}
<!--==========================
Top Bar
============================-->
<section id="topbar" class="d-none d-lg-block">
<div class="container clearfix">
<div class="contact-info float-left">
<i class="fa fa-envelope-o"></i> <a href="mailto:contact@example.com">name@websitename.com</a>
<i class="fa fa-phone"></i> +1 2345 67855 22
</div>
<div class="social-links float-right">
<a href="#" class="twitter"><i class="fa fa-twitter"></i></a>
<a href="#" class="facebook"><i class="fa fa-facebook"></i></a>
<a href="#" class="google-plus"><i class="fa fa-google-plus"></i></a>
<a href="#" class="linkedin"><i class="fa fa-linkedin"></i></a>
<a href="#" class="instagram"><i class="fa fa-instagram"></i></a>
</div>
</div>
</section>
<!-- Content lainnya -->
</div>
</header><!-- #header -->
<!--==========================
Hero Section
============================-->
<section id="hero" class="clearfix">
<div class="container">
<div class="hero-banner">
<img src="img/undraw_visual_data_b1wx.svg" alt="" class="img-fluid">
</div>
<div class="hero-content">
<h2>Business Grow<br><span> Experience</span></h2>
<!-- content lainnya -->
</main>
<!--==========================
Footer
============================-->
<footer id="footer">
<div class="container">
<div class="copyright">
© Copyright <strong>FORCE</strong>. All Rights Reserved
</div>
<div class="credits">
This <a href="https://webthemez.com/free-bootstrap-template/" target="_blank">Free Bootstrap Template</a> Powered by WebThemez.com
</div>
</div>
</footer><!-- #footer -->
{% endblock %}
Isi dari file di atas telah terpotong, untuk versi lengkap bisa didownload melalui github
Selanjutnya, jika kita jalankan server dan pergi ke browser, maka kita akan melihat perubahan pada template kita akan tetapi masih terlihat dummy karena tidak ada file css
dan js
yang bekerja.
Untuk memberi tahu kepada django bahwa kita akan menggunakan staticfiles
yang ada pada folder static
, maka kita harus merubah setting pada settings.py
yang ada pada project django_blog
kita.
Tambahkanlah setting berikut ini pada bagian bawah settings.py
yang kita miliki,
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
STATIC_URL = '/static/'
# Extra places for collectstatic to find static files.
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
Pada setting di atas, kita memberitahukan django bahwa kita akan menggunakan file static
dari folder static
yang telah kita miliki di project kita. Abaikan terlebih dahulu nama staticfiles
pada setting tersebut, we’ll get there, soon.
Selanjutnya, kita akan memanggil file-file static tersebut tersebut dalam template kita dengan cara:
{% static 'path/to/static/files' %}
Contoh:
<!DOCTYPE html>
<html lang="en">
<head>
{% load static %}
<meta charset="utf-8">
<title>FORCE Bootstrap 4 Website Template</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<link rel="stylesheet" href="{% static 'css/font-icon.css' %}">
<link href="{% static 'lib/ionicons/css/ionicons.min.css' %}" rel="stylesheet">
<!-- Main Stylesheet File -->
<link href="{% static 'css/style.css' %}" rel="stylesheet">
</head>
<body id="body">
{% block content %}
<!-- main content -->
{% endblock %}
<a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
<!-- JavaScript -->
<script src="{% static 'lib/jquery/jquery.min.js' %}"></script>
<script src="{% static 'lib/jquery/jquery-migrate.min.js' %}"></script>
</body>
</html>
Jika kita jalankan kembali browser, maka kita akan melihat static files telah berjalan dengan sempurna & sekarang kita memiliki tampilan yang lebih menarik.
Django menggunakan jinja
templating method.
{% extends "base.html" %}
adalah metode dengan cara meng-extends template base (base.html
)yang dapat kita gunakan berkali-kali tanpa harus menulis ulang html
dari awal untuk setiap halaman yang akan kita buat.{% block content %}
adalah metode untuk menampilkan file lain, contoh yang kita gunakan di atas adalah file home.html
.staticfiles
adalah folder hasil dari ./manage.py collectstatic
yang akan terbuat secara otomatis, (digunakan pada saat production){% include "filename.html" %}
adalah metode yang dapat digunakan untuk menampilkan page / content dari halaman lain di halaman yang kita kehendaki.Cukup sekian untuk tutorial kali ini, and keep learning!. Next tutorial Auth & Login pada Django.