尝试访问'/ media/uploads /

Yan*_*oud 5 django django-models django-admin django-uploads django-media

我在admin/urls上的上传方法有问题:

在我的设置中:

# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/var/www/example.com/media/"
MEDIA_ROOT = os.path.join(PROJECT_PATH, "media")

# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://example.com/media/", "http://media.example.com/"
MEDIA_URL = '/media/'

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/var/www/example.com/static/"
STATIC_ROOT = ''

# URL prefix for static files.
# Example: "http://example.com/static/", "http://static.example.com/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    os.path.join(PROJECT_PATH, "static"),
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
Run Code Online (Sandbox Code Playgroud)

在我的lms/models.py上

MEDIA_TYPES = (
    ('Videos', 'Videos'),
    ('Photos', 'Photos'),
    ('PDF', 'PDF'),
)


class LessonFile(models.Model):
    """
    The files for every lessons
    """
    lesson = models.ForeignKey(Lesson)
    documents = models.FileField(upload_to='/media/uploads/lms/lessons/')
    title = models.CharField(max_length=255)
    media_type = models.CharField(max_length=255, choices=MEDIA_TYPES)

    def __unicode__(self):
        return self.lesson
Run Code Online (Sandbox Code Playgroud)

在我的admin /上,当我尝试保存文档时(通过上传方法):

试图访问'/media/uploads/lms/lessons/xxxx.pdf'被拒绝.

bru*_*ers 5

https://docs.djangoproject.com/zh-CN/1.5/ref/models/fields/#django.db.models.FileField.upload_to

FileField.upload_to本地文件系统路径_将会附加到您的MEDIA_ROOT设置_

IOW,upload_to应该是一条相对路径。尝试以下方法:

documents = models.FileField(upload_to='uploads/lms/lessons/')
Run Code Online (Sandbox Code Playgroud)