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

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

作者: qizhen816 | 来源:发表于2019-08-12 09:36 被阅读0次

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

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

首先在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)
    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数据表中,图片则是存储其在服务器中的路径。

相关文章

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

    Django实现一个页面上传Char和Image至后台MySQL 网上关于Django文件上传的教程,大多数使用单...

  • 2018-07-23

    django项目admin后台整合tinymce富文本编辑并自定义添加图片本地上传和富文本中的回显 - 个人文章 ...

  • django-ckeditor

    一、前言 之前写了个测试报告的模版页面,后期同时需要上传图片,就需要使用富文本编辑器了,这里选择了django-c...

  • 微信小程序-图片加水印并保存

    业务需求:选择图片添加水印,并保存,或上传 技术要点:画布,图片选择、上传、保存 首先需要一个图片容器和一个画布 ...

  • Django常用-上传图片

    在Django中上传图片包括两种方式 在管理页面admin中上传图片 自定义form表单中上传图片,上传图片后,...

  • 上传图片预览并截取

    场景:上传图片,裁剪相应格式,并保存到服务端(上传图片当头像)实现原理:1.客户端上传图片文件2.将图片文件转换成...

  • Django 文件上传

    Django 文件上传 利用Django实现文件上传并且保存到指定路径下,其实并不困难,完全不需要用到django...

  • 通过API方式上传图片并可以被浏览

    django2.0+django2.0 RESTFramework 实现图片上传首先在settings.py中设置...

  • iOS 阿里云多图上传

    阿里云图片上传的基本思路: 1、选择图片 2、将图片保存在本地,同时返回图片路径、并生成缩略图用于 UI 显示。 ...

  • 使用py3fdfs - 踩坑实录 __str__ return

    后台运营人员 通过django的admin页面,进行(图片)文件的上传 django使用 自定义的storage类...

网友评论

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

      本文链接:https://www.haomeiwen.com/subject/gwhyjctx.html