Menu
CoddyTech

Mempertahankan Filter

Termasuk bagian View Berbasis Class dalam perjalanan Django di Coddy. Pelajaran 9 dari 18.

Buka lowongan kerja di Berlin, lalu tekan Berikutnya: halaman 2 menampilkan lowongan kerja dari setiap kota. Tautannya adalah ?page=2, string kueri baru yang utuh, jadi city=Berlin hilang.

Tag {% querystring %} dimulai dari string kueri saat ini, menetapkan nilai yang kamu sebutkan, lalu menuliskan hasilnya, termasuk ?. Tag ini sudah tersedia sejak Django 5.1, jadi tidak memerlukan {% load %}. Daftar resep yang difilter berdasarkan masakan menyediakan tautan ke tampilan yang diurutkan:

<a href="{% querystring sort="minutes" %}">Quickest first</a>

Pada /recipes/?cuisine=thai, tag ini menuliskan ?cuisine=thai&sort=minutes: filter tetap ada. Nilainya bisa berupa variabel template, dan None menghapus sebuah kunci: {% querystring sort="minutes" page=None %} juga kembali ke halaman 1.

Jangan tulis ? sebelum tag, atau tautannya akan diawali ??.

challenge icon

Tantangan

Mudah

Di job_list.html, buat kedua tautan paginasi tetap menyertakan sisa string kueri:

  • Next di /jobs/?city=Berlin menuju ke ?city=Berlin&page=2.
  • Previous juga tetap menyertakan kota.
  • Di /jobs/, Next tetap menuju ke ?page=2.

Tekan Jalankan, lalu tekan Next pada daftar lowongan di Berlin.

Coba sendiri

{% extends "jobs/base.html" %}

{% block title %}Jobs{% endblock %}

{% block content %}
  <h1>Jobs</h1>
  <p class="cities">
    <a href="{% url 'jobs:list' %}">All cities</a>
    <a href="?city=Berlin">Berlin</a>
    <a href="?city=Lisbon">Lisbon</a>
    <a href="?city=London">London</a>
  </p>
  <ul class="jobs">
    {% for job in jobs %}
      <li class="job">
        <a href="{% url 'jobs:detail' job.slug %}"><strong>{{ job.title }}</strong></a>
        at {{ job.company }}, {{ job.city }}
      </li>
    {% empty %}
      <li>No jobs yet.</li>
    {% endfor %}
  </ul>

  {% if is_paginated %}
    <nav class="pages">
      {% if page_obj.has_previous %}
        <a href="?page={{ page_obj.previous_page_number }}">Previous</a>
      {% endif %}
      <span>Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}</span>
      {% if page_obj.has_next %}
        <a href="?page={{ page_obj.next_page_number }}">Next</a>
      {% endif %}
    </nav>
  {% endif %}
{% endblock %}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di View Berbasis Class

Latihan sendiri: Playground Django