在我的Django项目中,我有一个名为bills的文件夹。我把我在django项目中创建的每个账单都保存在这个文件夹中。文件名是这样的:HK_Smith_2014.pdf是否有可能,在这个文件夹中浏览,搜索史密斯(在后台),并在我的模板中显示这个文件的链接。它应该是可能的,点击这个链接,文件被打开。
如果您将文件保存为模型中的FileField,您应该能够像这样在模板中访问它:
<a href="{{ my_bill.url }}">{{ my_bill.name }}</a>
然而,对于搜索函数,您需要做更多的工作。您必须创建一个表单,接受特定账单的输入,然后使用该信息在模型中搜索特定账单。这样做的一种方法如下:
class SearchForm(forms.Form):
search_term = forms.CharField()
def search(request):
form = SearchForm(request.POST)
if form.is_valid():
term = form.cleaned_data['search_term'].lower()
for obj in Bill.objects.all():
if term in obj.name.lower():
return HttpResponseRedirect(reverse('search:results', args=(obj.id,)))
else:
form = SearchForm()
return render(request, 'search/search.html', {'form':form})
当然,您必须有一个以bill_id作为参数的结果视图,以及一个要匹配的search.html模板。还有很多方法可以对此进行扩展(例如,如果无法在任何对象中找到搜索词的实例,则返回错误)。但这只是一个解决方案的框架。