Django中文件和图片上传

1.文件上传

models文件

models.FileField(upload_to='指定文件路径')

html文件

form中注意加 enctype="multipart/form-data"

views文件

中从html中获取时:request.FILES.get('表单名字')

从models中获取时:和其他models一样,

 

注意:

文件和图片都有一个默认的.url属性,可以找到路径,但是setting中需要配置

video也可以以文件形式上传

 

2.上传图片

setting.py 文件配置,末尾添加

# 定义文件上传的位置

MEDIA_URL = '/photo/' # 媒体文件的虚拟路径

MEDIA_ROOT = 'media/photo/' # 部署的时候会用到

 

模型models.py文件

创建两个数据库,一个放照片,一个是相册

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.db import models

# 相册

class Album(models.Model):

# 定义三个字段,默认一个id

title = models.CharField("相册标题",max_length=100)

img = models.ImageField(upload_to='photo') # 封面

description = models.CharField("相册描述",max_length=300)

 

# 照片

class Photo(models.Model):

# 照片存在哪个相册里,一张照片对一个相册

album = models.ForeignKey(Album)

img = models.ImageField(upload_to='photo')

# 自动记录图片上传时间

created_at = models.DateTimeField('创建时间',auto_now_add=True)

#格式化,

def __str__(self):

return "%s" %self.img

 

urls.py 一级路由文件配置

# 引入基础模块

from django.conf.urls import url,include

from django.contrib import admin

from django.conf.urls.static import static #图片专属路径

from django_photo import settings

 

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^app/',include('app.urls'))

] + static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)

views视图函数

# -*- coding: utf-8 -*-

from __future__ import unicode_literals

from django.shortcuts import render

from django.http import HttpResponse

from app.models import Album

# 处理图片列表

def album_list(request):

#从数据库获取所有图片

albums = Album.objects.all()

# for album in albums:

# print(album.img.url)

# templates的渲染方法

return render(request,'index.html',{'albums':albums})

def add_photo(request):

pass

def save_album(request):

#判断方法,此处可用类视图

if request.method == 'GET':

return render(request,'add_album.html')

#

elif request.method == 'POST':

title = request.POST.get('title')

desc = request.POST.get('description')

img = request.FILES.get('myimg')

album = Album(title=title,description=desc,img=img)

album.save()

return HttpResponse("ok")

html文件

根据需要,可先写一个基础文件,其他继承补充

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值