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 mencantumkan lowongan kerja dari setiap kota. Tautannya adalah ?page=2, sebuah query string yang sepenuhnya baru, jadi city=Berlin hilang.
Tag {% querystring %} dimulai dari query string saat ini, menetapkan nilai yang kamu sebutkan, lalu menuliskan hasilnya, termasuk ?. Fitur ini sudah tersedia sejak Django 5.1, jadi tidak memerlukan {% load %}. Daftar resep yang difilter berdasarkan masakan menautkan ke tampilan yang diurutkan:
<a href="{% querystring sort="minutes" %}">Quickest first</a>Pada /recipes/?cuisine=thai, hasilnya adalah ?cuisine=thai&sort=minutes: filter tetap ada. Nilai dapat 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 dimulai dengan ??.
Tantangan
MudahDi job_list.html, pastikan kedua tautan paginasi tetap menyertakan bagian lain dari string kueri. Di /jobs/?city=Berlin, Next mengarah ke ?city=Berlin&page=2, dan Previous juga tetap menyertakan kota. Di /jobs/, Next tetap mengarah ke ?page=2.
点击 Berlin, lalu Next: halaman 2 hanya menampilkan 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 %}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di View Berbasis Class
2Tampilan Generik untuk Menampilkan Data
ListViewDetailViewLatihan sendiri: Playground Django