django -- 文件上传至本地


他的路在西风的袍袖中,在夕阳的咽喉里


说明

之前看官网一直搞不明白,现在重新折腾了一下,并实现了效果


各项配置

  1. 配置 MEDIA 路径
# setting.py

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'
# 根目录 urls.py

from django.conf import settings
from django.conf.urls.static import static

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

需要在项目根目录下创建一个 media 文件夹,Django 社区是默认这样的,也可以根据自己的需要有所更改

  1. 配置 models
class Article(models.Model):
    #image = models.FileField(upload_to='blog/uploads/')

uploads_to 的参数指的是上传的文件将存储在 MEDIA_ROOT\blog\uploads 文件夹中

  1. 迁移进数据库中
$ python manage.py makemigrations
$ python manage.py migrate
  1. 模板中使用
{{ article.image.url }}

article 是一个文章对象,需要注意的是需要使用到 url,如果直接使用 article.image是访问不到的