dongnan
总版主
总版主
  • 粉丝52
  • 发帖数2168
  • 铜币13301枚
  • 威望5857点
  • 银元150个
  • 社区居民
  • 最爱沙发
  • 忠实会员
  • 原创写手
阅读:92回复:0

如何在 django admin 后台上传图片文件?

楼主#
更多 发布于:2018-11-21 09:47
目标
实现 django admin 后台上传图片文件功能。

环境
Django-1.11
Python-3.4
Ubuntu 14.04 Desktop

步骤
1. 在 setting.py 文件中设置上传目录
# setting.py
# 上传目录自动创建
MEDIA_ROOT = os.path.join(BASE_DIR, 'uploads')
MEDIA_URL = '/media/'

2. 在 models 中添加 ImageField 类型字段
# models.py 文件,以 article 类为例:
class Article(models.Model):
    # 省略...    
    photo = models.ImageField(upload_to='img/%Y/%m/%d/')
# 迁移数据库
python manage.py makemigrations
Migrations for 'blog':
  blog/migrations/0003_article_photo.py
    - Add field photo to article

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, blog, comment, contenttypes, sessions, user
Running migrations:
  Applying blog.0003_article_photo... OK

3. 在 admin 后台上传图片
# 在设置的类中上传图片,例如实例中的 Article 类,

图片:django-admin-upload-1.png



# 如果你没有在 admin后台找到设置的 model,需要在 admin.py 文件中注册 model,例如 Article :
# admin.py
from django.contrib import admin
from .models import Article, Category, Tag

# Register your models here.
admin.site.register(Article)
# 省略 ...

# 图片文件上传后的路径
file uploads/img/2018/11/06/t1.png
uploads/img/2018/11/06/t1.png: PNG image data, 862 x 522, 8-bit/color RGB, non-interlaced

# 文件路径保存在数据库内

图片:django-admin-upload-2.png




4. 在 urls.py文件中设置规则
# 最后为了在服务器中访问上传的图片文件,需要设置下 url规则。
# 项目 url.py
from django.conf import settings
from django.views.static import serve

urlpatterns = [
    # 省略 ...
    url(r'^media/(?P<path>.*)$', serve, {'document_root': settings.MEDIA_ROOT}),
]

5. 上传图片的 url 地址
http://127.0.0.1:8000/media/img/2018/11/06/t1.png

参考: django admin 后台上传图片
#
游客

返回顶部