如何在Django中传递一个列表的值给一个方法?



我正在尝试做这样的事情。我有一个带有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,我必须重定向到名称为"mis"的pdfNotes.html,以便我可以将其用作views.py中的参数来过滤我的数据,并在pdf笔记中仅显示"mis"详细信息。对于所有其他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)
    

    我该怎么做呢?

  • 据我所知,您正在使用相同的href在index.html中构造所有url调用,因此在请求处理中以后很难改进。为什么不简单地在url中添加一个参数,其中包含所需的pdf部分并进行检查呢?

    例如:

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

    修改url .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添加path,然后在HTML中修改URL,如下所示将参数传递给函数:

    <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>
    

    相关内容

    • 没有找到相关文章

    最新更新