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
如何将Django访问者文件上载到新的子目录,并且目录名应为会话名?_Django - Fatal编程技术网

如何将Django访问者文件上载到新的子目录,并且目录名应为会话名?

如何将Django访问者文件上载到新的子目录,并且目录名应为会话名?,django,Django,我正在创建一个django应用程序。它只有一个模型类是文件上传。它没有用户登录和注册系统 我的目标是,当有人访问网页并上传文件时,它会在“/media”目录中创建一个新目录。目录名应该是唯一的,也应该是会话名。仔细阅读: 当访问者访问页面并上传文件时,应自动创建一个新目录“a”,即使访问者重新加载页面并上传另一个新文件,也应创建另一个新目录“B”,并将会话上传的文件存储在目录“B”上。 Mymodel.py from django.db import models # Create your

我正在创建一个django应用程序。它只有一个模型类是文件上传。它没有用户登录和注册系统

我的目标是,当有人访问网页并上传文件时,它会在
“/media”
目录中创建一个新目录。目录名应该是唯一的,也应该是会话名。仔细阅读:

当访问者访问页面并上传文件时,应自动创建一个新目录“a”,即使访问者重新加载页面并上传另一个新文件,也应创建另一个新目录“B”,并将会话上传的文件存储在目录“B”上。

My
model.py

from django.db import models

# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField()
from django import forms
from .models import ImageForExtractText

class UploadImage(forms.ModelForm):
    class Meta:
        model = ImageForExtractText
        fields = [
            'image',
        ]
from .forms import UploadImage
from django.shortcuts import render, redirect

def upload(request):
    form = UploadImage(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    return render(request, 'home.html', {'form': form})
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")
和我的
form.py

from django.db import models

# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField()
from django import forms
from .models import ImageForExtractText

class UploadImage(forms.ModelForm):
    class Meta:
        model = ImageForExtractText
        fields = [
            'image',
        ]
from .forms import UploadImage
from django.shortcuts import render, redirect

def upload(request):
    form = UploadImage(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    return render(request, 'home.html', {'form': form})
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")
view.py

from django.db import models

# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField()
from django import forms
from .models import ImageForExtractText

class UploadImage(forms.ModelForm):
    class Meta:
        model = ImageForExtractText
        fields = [
            'image',
        ]
from .forms import UploadImage
from django.shortcuts import render, redirect

def upload(request):
    form = UploadImage(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    return render(request, 'home.html', {'form': form})
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")
和my
setting.py

from django.db import models

# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField()
from django import forms
from .models import ImageForExtractText

class UploadImage(forms.ModelForm):
    class Meta:
        model = ImageForExtractText
        fields = [
            'image',
        ]
from .forms import UploadImage
from django.shortcuts import render, redirect

def upload(request):
    form = UploadImage(request.POST or None, request.FILES or None)
    if form.is_valid():
        instance = form.save(commit=False)
        instance.save()
    return render(request, 'home.html', {'form': form})
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(os.path.dirname(BASE_DIR), "media")

希望我清楚我的问题是什么,如果我说的任何事情都不清楚,请告诉我

您可以将函数引用传递到文件字段的
upload\u
属性。这个函数应该有一个动态路径(一个随机目录),它将像这样自动创建

import os
import uuid
from django.conf import settings
from django.db import models


def image_path(_, file_name):
    return os.path.join(settings.MEDIA_ROOT, str(uuid.uuid4()), file_name)


# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField(upload_to=image_path)

您可以将函数引用传递到文件字段的
upload\u
属性。这个函数应该有一个动态路径(一个随机目录),它将像这样自动创建

import os
import uuid
from django.conf import settings
from django.db import models


def image_path(_, file_name):
    return os.path.join(settings.MEDIA_ROOT, str(uuid.uuid4()), file_name)


# Create your models here.
class ImageForExtractText(models.Model):
    image = models.FileField(upload_to=image_path)

谢谢你的解决方案,但我需要它应该是季节名称,我怎么做?谢谢你的解决方案,但我需要它应该是季节名称,我怎么做?