Menu
CoddyTech

שמירה על המסנן

חלק מהיחידה תצוגות מבוססות מחלקות במסלול ה-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.

אל תכתבו ? לפני התגית, אחרת הקישור יתחיל ב־??.

challenge icon

אתגר

קל

ב-job_list.html, יש לוודא ששני קישורי העימוד שומרים על שאר מחרוזת השאילתה. ב-/jobs/?city=Berlin, הקישור Next מוביל אל ?city=Berlin&page=2, והקישור Previous שומר גם הוא על העיר. ב-/jobs/, הקישור Next עדיין מוביל אל ?page=2.

לחצו על Berlin ואז על Next: בעמוד 2 מופיעות רק משרות בברלין.

נסו בעצמכם

{% 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 iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה תצוגות מבוססות מחלקות

תרגלו בעצמכם: Django אונליין