我想實現一個視圖,其中已經上傳文件的登錄用戶可以下載他的文件,但只有他,而不是其他用戶文件,所以我不用根據文件的pk創建一個id url。因此,我在查詢test_result_file表時查看了特定用戶。我認爲我可以做我想做的在我的模型寫一個函數:Django - 提供從模型中定義的功能下載
class test_result_file(models.Model):
user=models.ForeignKey(User)
system=models.ForeignKey(system)
test_id=models.ForeignKey(Detail)
path=models.CharField(max_length=300)
class Meta:
verbose_name="Test Result file"
verbose_name_plural="Test Result files"
def get_self(self):
path=self.path
wrapper = FileWrapper(open(path, "r"))
response=HttpResponse(wrapper, content_type="text/plain")
response['Content-Disposition'] ='attachment; filename="results.txt"'
return response
然而,在模板中,當我打電話:
<ul>
{% for at in attempts %}
<li>System Name: <em>"{{ at.system}}"</em>, download file: <a href="{{at.get_self}}">here</a> </li>
{% endfor %}</ul>
不提供下載,而是瀏覽器嘗試用響應的所有參數打開url並失敗。 我失去了什麼?這個功能可行嗎?
非常感謝。這就是我實施的或多或少..我只集成了@login_required和一些片段來檢查請求下載的人是誰上傳的。 – geompalik
wrt /最後一點(「檢查請求下載的人是上傳者」),當檢索模型實例時需要額外的參數:'testfile = get_object_or_404(pk = file_id,user = request。用戶)'。 –