吴嘉俊(Stef)高级讲师
拥有多年的Java开发经验,CTO,EasyJF开源团队创始人之一、负责 EasyJWeb项目的开发和维护。曾在国内多家大型软件公司负责公司内部框架的开发和维护,为多个大中型公司做过架构和技术咨询。曾组织开发了蓝源 装饰行业ERP、美国EMR、蓝源服装行业连锁管理系统、蓝源SaaS服务平台、蓝源Eloan互联网金融综合解决方案等系统产品。具有非常丰富项目开发和 管理经验。
擅长技术:主流JavaEE,Android技术,对 Spring、JPA、Hibernate、 MyBatis、Struts2、MongoDB、Redis等技术领域有深入研究。
吴老师有丰富的Java培训经验和IT培训行业顾问经验;授课激情,有感染力 ,注重对底层原理的剖析和理解;善于培养学生对编程的兴趣;
自学java与java培训该如何选择
从事IT培训行业这些年,身边经常有朋友来咨询,问现在是否可以加入这个高薪行业,Java学习难不难,需要哪些条件?
在软件开发设计行业当中,使用**多的编程语言就属Java软件开发了,很多人都想在Java编程开发领域寻求一份工作。
Java是当前世界上比较流行的计算机编程语言,Java彻底改变了人们的生活,国内的开发人才需求量仍然在不断的增长,主要原因还是在于移动互联网的快速发展,衍生出一大批的新生企业,创业公司,预计在未来5年内Java软件开发人才的需求将会远大于供给,其中java程序员、java工程师**为缺乏。
自学java与java培训是两个绕不开的话题,两者的区别,前者知识是自己搜寻的,买书看或者网上找视频看,而后者,技术知识是老师教的,作为一个普通大学生实际上任何人都能够自学,只不过聪明程度和坚持的时间长短不同,花费的时间长一点短一点而已。
学习关乎到时间和金钱,没有效果和质量的培训,其实是没有任何意义的。Java培训班有哪些呢?市面上的Java培训良莠不齐,选择时应该慎重些。Java致力于打造符合企业需求的全能型人才。课程定位定位中高级JAVA开发工程师,课程内容涉及面广,内容深。课程涵盖了Java、Web,数据库,企业流行框架,Java等企业**佳实践、云计算大数据课程、内容由浅入深,剖析原理,让学员掌握实用技术,做企业和社会需要的稀缺人才。
此外,Java培训将为你提供就业保障,开设有就业指导课,设有专门的就业指导老师,在毕业前期,毕业之际,就业老师会为你做专门的就业指导,更有职业素养课程,不仅将你打造成Java开发技术达人,更是一位懂得职场之道的合格就业者。还有丰富的Java学习视频免费为你提供学习。
互联网类项目 项目一:CRM客户管理系统
互联网类项目 项目一:CRM客户管理系统
项目简介
CRM项目主要是管理企业与客户之间的关系。该项目主要实现功能:营销管 理、客户管理、服务管理、统计报表、基础数据、权限管理等。
技术特点
项目备战(git、Maven、shiro)、Struts2(表现层MVC框架)、 Hibernate(数据层持久化框架)、Spring(业务逻辑IoC和AOP框架)、JBPM(工作流支持)、Junit(单元测试)、Jquery(JS框架)。
学习效果
**项目使学员熟悉软件开发的整个流程(需求分析、设计、编码、测试以 及部署与维护);提升框架整合能力;成为具备一定的项目管理和架构设计能力的中高级Java工程师。
Django处理文件上传File Uploads
>
HttPRequest.FILES
表单上传的文件对象存储在类字典对象request.FILES中,表单格式需为multipart/form-data
1 2 |
<form enctype= "multipart/form-data" method= "post" action= "/foo/" > <input type= "file" name= "image" />
|
request.FILES中的键来自于表单中的<input type="file" name="" />的name值:
1 |
img=request.FILES[ image ]
|
request.FILES中的值均为UploadedFile类文件对象。
UploadedFile
UploadedFile是类文件对象,具有以下方法和属性:
UploadedFile.read()
读取整个上传文件的数据,文件较大时慎用。
UploadedFile.multiple_chunks(chunk_size=None)
判断文件是否足够大,一般为2.5M
UploadedFile.chunks(chunk_size=None)
返回一个生成器对象,当multiple_chunks()为True时应该使用这个方法来代替read().
UploadedFile.name
上传文件的name。
UploadedFile.size
上传文件的大小。
UploadedFile.content_type
上传文件时的content_type报头,例如(e.g. text/plain or application/pdf).
UpladedFile.charset
编码
存储文件
想将上传的文件存储在本地时:
1 2 3 4 |
f=request.FILES[ image ] with open( some/file/name.txt , wb ) as destination: for chunk in f.chunks(): destination.write(chunk)
|
使用Form处理上传文件
也可以使用django自带的form来处理上传文件。
先创建带FileFiled或者ImageFiled的Form:
1 2 3 4 5 6 |
# In forms.py... from django import forms class UploadFileForm(forms.Form): title = forms.CharField(max_length=50) file = forms.FileField()
|
用Form处理:
1 |
>>> f =UploadFileFormt(request.POST, request.FILES)
|
view函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
from django.http import HttpResponseRedirect from django.shortcuts import render_to_response from .forms import UploadFileForm def handle_uploaded_file(f): with open( some/file/name.txt , wb ) as destination: for chunk in f.chunks(): destination.write(chunk) def upload_file(request): if request.method == POST : form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): handle_uploaded_file(request.FILES[ file ]) return HttpResponseRedirect( /success/url/ ) else : form = UploadFileForm() return render_to_response( upload.html , { form : form})
|
使用Model处理上传文件
如果创建了一个带FileField或者ImageField域的Model,需要将上传文件存储到Model的FileFIeld域。
比如,使用nicEdit文本编辑器时,需要存储上传的文件,建立Model:
1 2 3 4 |
from django.db import models class NicEditImage(models.Model): image = models.ImageField(upload_to= nicedit/%Y/%m/%d )
|
创建ModelForm:
1 2 3 4 5 |
from django import forms class NicEditImageForm(forms.ModelForm): class Meta: model = NicEditImage
|
view:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
def upload(request): if not request.user.is_authenticated(): json = simplejson.dumps({ success : False, errors : { __all__ : Authentication required }}) return HttpResponse(json, mimetype= application/json ) form = NicEditImageForm(request.POST or None, request.FILES or None) if form.is_valid(): image = form.save() #保存Form和Model json = simplejson.dumps({ success : True, upload : { links : { original : image.image.url}, image : { width : image.image.width, height : image.image.height} } }) else : json = simplejson.dumps({ success : False, errors : form.errors}) return HttpResponse(json, mimetype= application/json )
|
当然也可以手动存储文件到Model的文件域:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
from django.http import HttpResponseRedirect from django.shortcuts import render from .forms import UploadFileForm from .models import ModelWithFileField def upload_file(request): if request.method == POST : form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): instance = ModelWithFileField(file_field=request.FILES[ file ]) #保存文件到FileField域 instance.save() return HttpResponseRedirect( /success/url/ ) else : form = UploadFileForm() return render(request, upload.html , { form : form})
|
不使用Form处理
想获得更大自由度时,可以全手动处理。
1 2 3 4 5 6 |
from django.db import models class Car(models.Model): name = models.CharField(max_length=255) price = models.DecimalField(max_digits=5, decimal_places=2) photo = models.ImageField(upload_to= cars )
|
Model的FileField有以下属性:
1 2 3 4 5 6 7 8 9 |
>>> car = Car.objects.get(name= "57 Chevy" ) >>> car.photo <ImageFieldFile: chevy.jpg> >>> car.photo.name u cars/chevy.jpg >>> car.photo.path u /media/cars/chevy.jpg >>> car.photo.url u http://media.example.com/cars/chevy.jpg
|
Model的FileField是一个File对象,除了具有File对象的各种方法外,还有一个额外的save()方法:
FieldFile.save(name, content, save=True)
name为存储名字,content为File或者File子类的实例
1 2 |
>>> car.photo.save( myphoto.jpg , content, save=False) >>> car.save()
|
类似于
1 |
>>> car.photo.save( myphoto.jpg , content, save=True)
|
手动存储:
1 2 3 4 5 6 |
from django.core.files.base import ContentFile photo=request.FILES.get( photo , ) if photo: file_content = ContentFile(photo.read()) #创建File对象 car.photo.save(photo.name, file_content) #保存文件到car的photo域 car.save()
|
相关推荐: