Tutorial django framework untuk pemula part 2

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:

  • Javascript
  • CSS
  • jQuery
  • Bootstrap 4
  • Fontawesome (optional)

Static

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

Templates

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">
        &copy; 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.

Conclusion

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.


Tags: #python, #TutorialsDjango, #Blog, #Tutorial-Python-Untuk-Pemula