Python 使用Django文件传输下载文件时出现问题

Python 使用Django文件传输下载文件时出现问题,python,django,django-templates,django-views,download,Python,Django,Django Templates,Django Views,Download,我已经上传了一个文件,通过我的网站管理部分,我希望能够通过我的网站公开下载。我知道我上载的文件已成功上载,因为我可以在App Engine Blob存储中查看它。我很难找出以下代码中有什么不起作用: 我的模型的相关部分: class CalendarEvent (models.Model): file = models.FileField(upload_to='uploads/%Y/%m/%d/%H/%M/%S/') 在my views.py文件中,相关代码为: def calenda

我已经上传了一个文件,通过我的网站管理部分,我希望能够通过我的网站公开下载。我知道我上载的文件已成功上载,因为我可以在App Engine Blob存储中查看它。我很难找出以下代码中有什么不起作用:

我的模型的相关部分:

class CalendarEvent (models.Model):
    file = models.FileField(upload_to='uploads/%Y/%m/%d/%H/%M/%S/')
在my views.py文件中,相关代码为:

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)
{% 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 %}
在我的模板中,相关代码为:

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)
{% 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 %}
{%e在事件%}
{%url Calendar.views.download_handler pk=e.pk作为回退_url%}
{%endfor%}

下载处理程序的视图名称应为
.views.download\u handler
。您可能没有一个名为“e”的应用程序,其中没有相应的视图。

您观察到了什么症状?@JameySharp{%firstof e.file | public_download_url fallback_url%}解析为空,因此我的下载链接没有用。我将其更改为{%url Calendar.views.download_handler pk=e.pk作为fallback_url%},但它仍然不起作用:(@zpesk,模块名称通常都是小写的。如果您想在Python源代码中导入
下载处理程序
函数,您将从哪个模块名称导入它?然后使用该名称。应用程序名称是“Calendar”-我不确定还会放什么?有什么建议吗?@zpesk,尝试运行“
Python manage.py shell
”,然后“
从django.core.urlResolver导入反向
”,然后“
反向('Calendar.views.download_handler')
”。如果返回正确的URL路径,那么确实是模板的这一部分是正确的。否则,它引发的异常将帮助您(和我们)找出错误。