Как передать значение списка indjango в метод

Я пытаюсь сделать что-то вроде этого, у меня есть панель навигации с элементами li.

**index.html**
<ul class="submenu dropdown-menu">
 <li><a class="dropdown-item" name="mis" href="{% url 'pdfNotes'%}">MIS</a></li>
                          <li><a class="dropdown-item" href="{% url 'pdfNotes'%}">MA</a></li>
                          <li><a class="dropdown-item" href="{% url 'pdfNotes'%}">UXD</a></li>
                          <li><a class="dropdown-item" href="{% url 'pdfNotes'%}">OSS</a></li>
</ul>

Здесь, когда я перехожу к первому списку '

  • ', т.е. для MIS я должен перенаправить на pdfNotes.html с именем 'mis', чтобы я мог использовать это как параметр в views.py для фильтрации данных и отображения только 'MIS' деталей в pdf notes. то же самое для всех других li элементов.
  • **pdfNotes.html**
    {% if pdfnote %}
    
    
    <table>
    
        <tr>
            <th># </th>
            <th>NAME</th>
            <th>DOWNLOAD FILE</th>
        </tr>
        {% with counter=1 %}
        {% for item in pdfnote %} 
        {% with crs=item.course %}
        
        <tr>
            <td id="id">{{crs}}</td>
            <td id="id">{{pattn}}</td>
            <td id="id">{{sem}}</td>
            <td id="id">{{ forloop.counter}}</td>
            <td id="name">{{item.name}}</td>
            <td id="downloadBtn">
                <a href="{{item.file.url}}" class="btn-outline-success" download >DOWNLOAD</a>
            </td>    
        </tr>
        {% endwith %}
        {% endfor %}
        {% endwith %}
    </table>
    
    
    **model.pdf**
    
    class PDF_Notes(models.Model):
    
        name=models.CharField("File name",max_length=100)
        subject=models.CharField("Subject",max_length=50)
        course=models.CharField("Course",max_length=50)
        semester=models.CharField("Semister",max_length=50)
        year=models.CharField("Year",max_length=50)
        source=models.CharField("Source",max_length=100)
        file=models.FileField(upload_to="media/PdfNotes")
    
        def __str__(self):
            return self.name
    
    
    **view.py**
    
    def pdfNotes(request):
    
        pdfNotes_file=PDF_Notes.objects.all()
        #sub=request.GET[]
        if(request.GET['mis']):
            pdfNotes_file=PDF_Notes.objects.all().filter(subject="MIS")
        n=len(pdfNotes_file)
        print("hello",pdfNotes_file)
        params={'pdfnote':pdfNotes_file,'total_items':n}
        return render(request,'pdfNotes.html',params)
    

    как я могу это сделать, пожалуйста... Спасибо!!!

    Насколько я вижу, вы строите все вызовы url в вашем index.html с одним и тем же href, так что это трудно уточнить позже при обработке запроса. Почему бы вам просто не добавить параметр к url с необходимыми разделами pdf и проверить это?

    Например:

    <li><a class="dropdown-item" name="mis" href="{% url 'pdfNotes'%}/mis">MIS</a></li>
    

    измените в urls.py, чтобы он принимал этот параметр:

    path('pdfNotes/<str:pdf_section>', views.pdfNotes)
    

    и обработать этот параметр в файле views.py:

    pdf_section = requests.get['pdf_section']
    

    и затем делайте с pdf_section все, что пожелаете.

    Надеюсь, я правильно понял ваш вопрос? Надеюсь, это поможет.

    Я бы рекомендовал создать следующую функцию:

    def get_pdf_notes(request, subject):
        pdfNotes_file=PDF_Notes.objects.all().filter(subject=subject)
        n=len(pdfNotes_file)
        params={'pdfnote':pdfNotes_file,'total_items':n}
        return render(request,'pdfNotes.html',params)
    

    Добавьте путь в URL для этого get_pdf_notes с именем 'get_pdf_notes' и затем измените url в вашем HTML следующим образом, чтобы передать аргумент функции:

    <ul class="submenu dropdown-menu">
     <li><a class="dropdown-item" name="mis" href="{% url 'get_pdf_notes MIS'%}">MIS</a></li>
     <li><a class="dropdown-item" href="{% url 'get_pdf_notes MA'%}">MA</a></li>
     <li><a class="dropdown-item" href="{% url 'get_pdf_notes UXD'%}">UXD</a></li>
     <li><a class="dropdown-item" href="{% url 'get_pdf_notes OSS'%}">OSS</a></li>
    </ul>
    
    Вернуться на верх