如何将 Django 中列表的值传递给方法?
How to pass the value of a list in Django to a method?
我正在尝试做这样的事情。我有一个包含 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
中的参数来过滤我的数据并在 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>
更改 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 添加路径,然后如下修改 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>
我正在尝试做这样的事情。我有一个包含 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>
在这里,当我导航到第一个列表“
pdfNotes.html
,名称为 'mis' 这样我就可以将其用作 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>
更改 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 添加路径,然后如下修改 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>