5

我在管理员/网址上的上传方法有问题:

在我的设置中:

# 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',
)

在我的 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

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

尝试访问“/media/uploads/lms/lessons/xxxx.pdf”被拒绝。

4

2 回答 2

5

https://docs.djangoproject.com/en/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/')
于 2013-10-03T07:35:58.627 回答
0

删除参数中的前导斜杠后尝试upload_to

class LessonFile(models.Model):
    ...
    documents = models.FileField(upload_to='uploads/lms/lessons/')
    ...

更新:删除了 upload_to 参数中的额外media目录。

于 2013-10-03T07:37:05.003 回答