在模板中显示文件链接

时间:2014-03-15 20:02:39

标签: django file templates hyperlink

在我的Django项目中,我有一个名为bills的文件夹。我将在django项目中创建的每个账单保存在此文件夹中。文件名是这样的: HK_Smith_2014.pdf 是否可以在此文件夹中浏览搜索Smith(在后台)并在我的模板中显示该文件的链接。应该可以点击此链接,然后打开文件。

1 个答案:

答案 0 :(得分:0)

如果要将文件保存为模型中的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模板。您可以通过多种方式对此进行扩展(例如,如果您无法在任何对象中找到搜索词的实例,则返回错误)。但这是一个解决方案的骨架。