שמירה על המסנן
חלק מהיחידה תצוגות מבוססות מחלקות במסלול ה-Django של Coddy. שיעור 9 מתוך 18.
פתחו את המשרות בברלין ולחצו על „הבא”: בעמוד 2 מופיעות משרות מכל עיר. הקישור הוא ?page=2, מחרוזת שאילתה חדשה לגמרי, ולכן city=Berlin נעלם.
התגית {% querystring %} מתחילה ממחרוזת השאילתה הנוכחית, מגדירה את הערכים שציינתם וכותבת את התוצאה, כולל ?. היא מובנית מאז Django 5.1, ולכן אין צורך ב-{% load %}. רשימת מתכונים המסוננת לפי סוג המטבח מקשרת לתצוגה ממוינת:
<a href="{% querystring sort="minutes" %}">Quickest first</a>בכתובת /recipes/?cuisine=thai היא כותבת ?cuisine=thai&sort=minutes: המסנן נשמר. ערך יכול להיות משתנה תבנית, ו-None מסיר מפתח: {% querystring sort="minutes" page=None %} גם חוזר לעמוד 1.
אל תכתבו ? לפני התגית, אחרת הקישור יתחיל ב-??.
אתגר
קלבקובץ job_list.html, דאג ששני קישורי העימוד ישמרו על שאר מחרוזת השאילתה:
Nextבכתובת/jobs/?city=Berlinמוביל אל?city=Berlin&page=2.Previousמשאיר גם את העיר.- בכתובת
/jobs/,Nextעדיין מוביל אל?page=2.
לחץ על Run ואז על Next במשרות של Berlin.
נסו בעצמכם
{% 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 %}
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תצוגות מבוססות מחלקות
תרגלו בעצמכם: Django אונליין