Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何从django中提供的许多csv文件中选择csv文件_Python 3.x_Django - Fatal编程技术网

Python 3.x 如何从django中提供的许多csv文件中选择csv文件

Python 3.x 如何从django中提供的许多csv文件中选择csv文件,python-3.x,django,Python 3.x,Django,我对django和python还很陌生。 在django项目中,我的应用程序中有许多相同格式的不同csv文件。我想使用项目(网站)的超链接选择一个特定的文件。 我该怎么做? 还有其他方法吗?您正在询问如何为静态文件提供服务。有关详细信息,请阅读。 如果在脱机服务器上执行此操作,只需在项目设置页面上定义Django可以在何处找到静态资产(文件夹名称)。通过将STATIC\u URL='/STATIC/'放入设置中,然后将所有csv文件放入文件夹调用STATIC,该文件夹调用应位于项目的根目录中。然

我对django和python还很陌生。 在django项目中,我的应用程序中有许多相同格式的不同csv文件。我想使用项目(网站)的超链接选择一个特定的文件。 我该怎么做?
还有其他方法吗?

您正在询问如何为静态文件提供服务。有关详细信息,请阅读。 如果在脱机服务器上执行此操作,只需在项目设置页面上定义Django可以在何处找到静态资产(文件夹名称)。通过将
STATIC\u URL='/STATIC/'
放入设置中,然后将所有csv文件放入文件夹调用
STATIC
,该文件夹调用应位于项目的根目录中。然后,您可以使用{%static%}标记访问文件并获取它们的URL。对于部署,您还需要在设置中定义
STATIC\u ROOT


如果您需要在生产中提供静态文件,您可以使用类似的方法,以便于使用。

除了静态文件方法外,还可以响应要求提供更多信息的评论

如果您创建了您的产品,请执行以下操作:

然后,您可以通过django管理员或编程方式上载文件,并通过视图将模型实例作为上下文传递,例如

def view(request):
    files = CSVFile.objects.all()      
    return render(request, 'template.html, {'files': files})
然后,您可以使用第二个视图下载文件:

然后在URL.py中:

urlpatterns = [
    path('', views.view, name='home'),
    path('file/<int:pk>', views.download, name='download'),
]

查看有关字段的更多信息,并向下滚动至/搜索文件字段,以及管理模型中的文件

请解释“我想使用项目(网站)的超链接选择特定文件”的含义您想将这些文件作为静态文件提供服务,还是希望有人能够将CSV文件上载到您的网站?我的项目中有10个CSV文件(数据不同,但元数据相同)。我想通过链接选择这些文件中的任何一个。我该怎么做?它是否需要一个以文件名结尾的网站链接(听起来可能很荒谬)或其他东西?如果文件附加到模型上,您可以使用以模型pk结尾的url访问model@nihilok他们没有模型,但我可以。你能多解释一点或是一些链接吗?嘿@nihilok谢谢你的帮助。您能告诉我如何在views.py中打开这个(file=CSVFile.objects.filter(id=?).first())csv文件吗。我找不到这个解决方案。这取决于你想用它做什么。。如果它在python代码中,您可能根本不需要使用“django”方法。如果您只想从模板访问该文件,我将在回答中添加一些更具体的示例
def download(request, pk):
    csv = CSVFile.objects.filter(pk=pk).first()
    filename = csv.file.name.split('/')[-1]
    response = HttpResponse(csv.file, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=%s' % filename
    return response
urlpatterns = [
    path('', views.view, name='home'),
    path('file/<int:pk>', views.download, name='download'),
]
<body>
  <h1>Download your CSVs!</h1>
  {% for file in files %}
    <p><a href="{% url 'download' pk=file.pk %}"><button type="button">Download {{ file.file.name }}</button></a></p>
  {% endfor %}
</body>
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'