我正在运行一个 Django 网站,我希望能够通过我的管理面板上传文件,然后让主站点的访问者能够下载它。我正在使用 Django-nonrel、Django FileTransfers 和 Google App Engine 运行我的网站。我相信上传功能可以正常工作,因为我可以在我的 App Engine Blob 存储中看到该文件。我似乎无法弄清楚如何在公共网站上显示指向指定文件的下载链接。我已经粘贴了下面的相关类:
我有一个名为日历的应用程序,它具有以下模型:
class CalendarEvent (models.Model):
start = models.DateTimeField(auto_now=False, auto_now_add=False)
end = models.DateTimeField(auto_now=False, auto_now_add=False)
title = models.CharField(max_length=500)
description = models.TextField()
file = models.FileField(upload_to='uploads/%Y/%m/%d/%H/%M/%S/')
这是视图:
def calendar(request):
events = CalendarEvent.objects.exclude(start__lt=datetime.datetime.now()).order_by('start')
return render_to_response('home/calendar.html',{'events': events},context_instance=RequestContext(request))
def download_handler(request, pk):
upload = get_object_or_404(CalendarEvent, pk=pk)
return serve_file(request, upload.file, save_as=True)
这是我的管理员:
class calendarAdmin(admin.ModelAdmin):
list_display = ('title','start','end')
admin.site.register(CalendarEvent, calendarAdmin)
最后,这是我的模板的相关部分:
{% for e in events %}
{% url Calendar.views.download_handler pk=e.pk as fallback_url %}
<a href="{% firstof e.file|public_download_url fallback_url %}">Download</a>
{% endfor %}
{% firstof e.file|public_download_url fallback_url %} 只是返回空白,我不确定我哪里出错了。