如何为每个创建的项目创建带有子文件夹的文件夹?

时间:2020-07-17 13:45:42

标签: python django

每次创建项目时,如何创建文件夹和子文件夹。文件夹的位置可以位于

media ----- Projects |----Project 1 |-----Subfolder 1
                     |              |-----Subfolder 2
                     |              |-----Subfolder 3
                     |
                     |----Project 2 |-----Subfolder 1
                     |              |-----Subfolder 2
                     |              |-----Subfolder 3
                     |
                     |----Project 3 |-----Subfolder 1
                                    |-----Subfolder 2
                                    |-----Subfolder 3
                 

views.py

def create_project(request):
        form = ProjectForm(request.POST or None, request.FILES or None)
        if form.is_valid():
            project = form.save(commit=False)
            project.save()
            return render(request, 'projects/detail.html', {'project': project})
        context = {
            "form": form,
        }
        return render(request, 'projects/create_project.html', context)

1 个答案:

答案 0 :(得分:1)

您可以使用内置的python函数从django视图中操纵文件系统。为此,您需要导入os模块。示例代码显示了the article的摘录:

import os;
#will check if c:\temp\python exists and if no will create it
dir = os.path.join("C:\\","temp","python")
if not os.path.exists(dir):
    os.mkdir(dir)

在django中使用它时,您需要了解运行您的应用程序的进程权限有限,因此某些位置将无法访问。从Django视图执行时,相对路径设置为 PROJECT_ROOT (您在settings.py中定义)。但是,上面的代码与保管箱无关。为了管理Dropbox中的文件夹,您需要使用为此提供的API。

作为附加说明,django在上传文件时会自动在媒体文件夹中创建文件夹(如果您在FileField的'upload_to' parameter中指定了一个文件夹)。您可以通过使用可以返回不同路径(取决于您保存的内容)的函数替换upload_to来更改行为。如果您想朝那个方向this may be usefull