您的位置:首页 > 数据库 > SQL

Django入门:实现一个页面同时上传文本和图片,并保存至MySQL

2019-06-10 10:07 399 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qizhen816/article/details/91361388

Django实现一个页面上传Char和Image至后台MySQL

网上关于Django文件上传的教程,大多数使用单独页面,并在上传完成后页面跳转,这种方法虽然利于展示,但是对刚熟悉Django和html的新手来说不太友好,对于将文本和图片同时上传至数据库的简单需求可以用如下方法解决:

settings.py

首先在MySQL中建立数据库,在Django中注册项目、连接数据库,并定义

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#//数据库的类型
'USER': 'root',                    #数据库服务器的用户
'PASSWORD': 'root',               #密码
'NAME': 'Mydata',
# 'NAME':  所使用的的数据库的名字,大小写字母和MySQL中完全对应
'HOST': '127.0.0.1',               #主机
'PORT': '3306'                    #端口
}
}

由于使用了图片的media功能,需要在TEMPLATES中声明:

TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')]
,
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.media', #加上这一行
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]

增加Media文件夹用于存图片文件:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
#设置静态文件路径为主目录下的media文件夹
MEDIA_URL = '/media/'
#url映射

models.py

在数据库中定义字段格式,在这里定义了5个Char类型和一个Image类型:

#数据库
class User(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50
7ff7
)
age = models.CharField(max_length=100)
gender = models.CharField(max_length=100)
illhistry = models.CharField(max_length=100)
img = models.ImageField(upload_to='')

def __unicode__(self):
return self.username

定义完成后要迁移:

python manage.py makemigrations
python manage.py migrate

views.py

然后在页面后台中增加获取数据和存入数据库的语句:

#上传
def upload(req):
if req.method == 'POST':
uf = UserForm(req.POST,req.FILES)
if uf.is_valid():
#获得表单数据
username = uf.cleaned_data['username']
password = uf.cleaned_data['password']
age = uf.cleaned_data['age']
gender = uf.cleaned_data['gender']
illhistry = uf.cleaned_data['illhistry']
img = uf.cleaned_data['img']
#添加到数据库
user = User.objects.create(username= username,password=password,age=age,gender=gender,illhistry=illhistry,iris=iris)
user.save()
return HttpResponse('upload success!!')
else:
uf = UserForm()
return render(req,'test.html',context= {'uf':uf})

test.html

页面中的表单:

#上传
{% csrf_token %}
<p class="meta-info">
姓名:{{uf.username}}
</p>
<p class="meta-info">
密码:{{uf.password}}
</p>
<p class="meta-info">
年龄:{{uf.age}}
</p>
<p class="meta-info">
性别:{{uf.gender}}
</p>
<p class="meta-info">
既往病史:{{uf.illhistry}}
</p>
<p class="meta-info">
上传图片:{{uf.img}}
</p>
<p class="meta-info">
<input class="mybutton" type="submit" value = "完成" />
</p>

其他

这种方法将文本以Char的形式储存在MySQl数据表中,图片则是存储其在服务器中的路径。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐