目标:
利用现有的知识创建一个图片显示网站,实现图片上传、显示、删除的操作(后续实现多图片上传)
开发环境:
Ubuntu 20.04.1 LTS
python3.8
django3.1.1
默认已经装好的包:
一、创建django工程(myImageSite),app(imageSite),创建模板文件夹(templates)、静态文件文件夹(static)并在settings.py配置路径
1.创建工程:
django-admin startproject myImageSite
目录
2.在myImageSite目录下创建app(imageSite)、模板文件夹(templates)、静态文件文件夹(static)
cd myImageSite
django-admin startapp imageSite
mkdir static
mkdir templates
现在的目录是这样:
3.配置settings文件(myImageSite/settings.py)
1.设置app加入imageSite
在INSTALLED_APPS中加入‘imageSite‘,
2.设置默认模板文件夹templates
‘DIRS‘: [BASE_DIR / ‘templates‘],
3.配置静态文件路径(static)
在settings.py最后加入STATICFILES_DIRS = [BASE_DIR / ‘static‘,]
MEDIA_ROOT = BASE_DIR / ‘static‘
二、设计图片模型类(Images)并迁移数据库
1.在static目录下创建media文件夹作为上传图片的路径
2.imageSite/models.py中创建图片模型类Images,(该数据库有两列:默认的主键id和图片名称images_name)
1 from django.db import models 2 class Images(models.Model): 3 """图片模型类""" 4 images_name = models.ImageField(upload_to=‘media‘) # upload_to=‘media‘指定上传图片的路径:BASE_DIR/static/media
3.迁移数据库
1.在mysql中创建数据库image_site并指定字符集为utf8,排序规则为utf8_general_ci
CREATE DATABASE image_site CHARACTER SET utf8 COLLATE utf8_general_ci;
2.在myImageSite/settings.py中配置默认数据库为mysql
1 DATABASES = { 2 ‘default‘: 3 { 4 ‘ENGINE‘: ‘django.db.backends.mysql‘, # 数据库引擎 5 ‘NAME‘: ‘image_site‘, # 数据库名称 6 ‘HOST‘: ‘127.0.0.1‘, # 数据库地址,本机127.0.0.1 7 ‘PORT‘: 3306, # 端口 8 ‘USER‘: ‘root‘, # 数据库用户名 9 ‘PASSWORD‘: ‘root‘, # 数据库密码 10 } 11 }
3.迁移数据库
3.1 在myImageSite/__init__.py中导入mysql数据库
myImageSite/__init__.py:
1 import pymysql 2 3 pymysql.install_as_MySQLdb()
3.2python manage.py makemigrations
python manage.py migrate
python manage.py makemigrations,遇到报错
查了一下是因为导入的mysqlclient的版本与现有不符,myImageSite/__init__.py中加入这行就可以了:
1 import pymysql 2 pymysql.version_info = (1, 4, 13, "final", 0) 3 pymysql.install_as_MySQLdb()
数据库已经迁移完成(model.py中Images类对应的表是 数据库image_site中的imageSite_images表,有两个字段:id,images,主要对这个表进行操作)
django边学边做:用Django3创建一个图片网站,实现多张图片上传、显示并删除图片(一、创建项目、app和模型类)