Django 文件上传

静水大智 发布于 2015/11/23 09:23
阅读 350
收藏 1

MySQL连接为什么挂死了?别踩坑!>>>

最近正在学习Django,在网上找官方文档学习;实显了个文档上传的功能,初学显摆一下,给自己加个油,加油加油!!

过程如下:

1.在models.py文件中建立数据库表对应的类,需要倒入ModelForm,如下:

  1 from django.db import models

  2 from django.forms import ModelForm

  3 

  4 class userfile(models.Model):

  5   username=models.CharField(max_length=200)

  6   filepath=models.FileField(upload_to="media/%Y/%m/%d")

  7   def __str__(self):

  8     return self.usrname;

  9 

 10 class ufForm(ModelForm):

 11   class Meta:

 12     model=userfile

 13     fields=['username','filepath']

有两个类,通过ModelForm的子类ufForm来实现Model来生成Form类,实现数据库表与html表单的一一对应

fields就是属性的引用。upload_to是文件保存的地址,在setting.py配置文件中添加MEDIA_ROOT=('/tmp')这一句,那文件的完整的路径就是 /tmp/media/2015/XX/XX/,XX表示的是几月几号。

2.在views.py文件中的内容如下:

  1 from django.shortcuts import render

  2 from models import ufForm

  3 from django.http import HttpResponse

  4 

  5 def registt(request):

  6   if request.method=="POST":

  7     form = ufForm(request.POST, request.FILES)

  8     if form.is_valid():

  9       form.save()

 10       return HttpResponse("Upload Success!")

 11   else:

 12     form = ufForm()

 13   return render(request,'fileup/index.html',{'form':form})

注意到save()方法了吗,对它就是ModelForm类的方法,save()会帮你实现文件的保存到指定的目录

其他的就简单了,在urls.py中建立好url喝方法的对应关系。

中间遇到一个白痴的问题,就是没有同步数据库,结果虽然文件成果上传,但页面返回的是error界面,说没有对应的table表。所以别忘记运行python manage.py makemigrations和python manage.py migrate

以下是话题补充:

@静水大智:参考资料http://blog.csdn.net/feelang/article/details/25040873 (2015/11/23 09:25)
加载中
返回顶部
顶部