Django 一个简单的图书管理程序(六 添加CSV文件导入导出操作)
来源:互联网 发布:wget mysql 5.7 编辑:程序博客网 时间:2024/05/16 12:50
现在添加一个对图书信息CSV文件的导入导出操作
1. 新建“forms”
右键项目名称,新建包“file”。
右键包名“file”,新建“forms.py”, 代码如下:
#!usr/bin/env python#coding: utf-8'''Created on 2012-7-11@author: jingwen.wu'''from django import formsclass UploadFileForm(forms.Form): title = forms.CharField(max_length=50) file = forms.FileField()
2. 添加导入导出操作
在“library/book/views.py”里添加代码:
def uploadfile(request): if request.POST: form = UploadFileForm(request.POST, request.FILES) f = request.FILES['file'] line = f.readline() #读取表头 while True: line = f.readline() try: line1 = line.decode('utf-8-sig') if not line1 or line1 == '\r\n' or line1 =='\r' or line1 == '\n' or line1 == '': break arg = line1.split(',') publicationTime = arg[3].rstrip('\r\n') book = Book(name = arg[0], author = arg[2], press = arg[1], publicationTime = publicationTime) book.save() except: pass line2 = line.decode('gb2312') if not line2 or line2 == '\r\n' or line2 =='\r' or line2 == '\n' or line2 == '': break arg = line2.split(',') publicationTime = arg[3].rstrip('\r\n') book = Book(name = arg[0], author = arg[2], press = arg[1], publicationTime = publicationTime) book.save() f.close() return render_to_response('book/success.html') else: form = UploadFileForm() return render_to_response('book/upload.html', {'form': form}, context_instance=RequestContext(request))def downloadfile(request): response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=book_list.csv' writer = csv.writer(response) writer.writerow(['name', 'author', 'press', 'publicationTime', 'reader']) books = Book.objects.all() for book in books: if book.reader_id: try : readName = Reader.objects.get(id__iexact = book.reader_id).name except: readName = '' else : readName = '' writer.writerow([book.name, book.author, book.press, book.publicationTime, readName]) return response
3. 修改“urls.py”
在“library/book/urls.py”的“patterns()”里添加如下代码:
url(r'^upload/$', 'book.views.uploadfile', name = "books_uploadfile"), url(r'^download/$', 'book.views.downloadfile', name = "books_downloadfile"),
4. 添加导入文件模板
在“library/static/static/template”下添加导入文件模板“book_list.csv”
5. 添加导入界面
在“library/templates/book”下添加“upload.html”,代码如下:
<div class="page"><div class="pageContent"><form method="post" action="{% url books_uploadfile %}" enctype="multipart/form-data" class="pageForm required-validate" onsubmit="return iframeCallback(this, dialogAjaxDone)">{% csrf_token %}{% load static %}<div class="pageFormContent" layoutH="56"><div class="nowrap"><label>请下载文件模板:</label><div><a class="button" href="{% get_static_prefix %}template/book_list.csv" target="dwzExport" ><span>文件模板</span></a></div></div><div class="unit"><label>请选择上传文件:</label><input name="file" type="file" /></div></div><div class="formBar"><ul><li><div class="buttonActive"><div class="buttonContent"><button type="submit">提交</button></div></div></li><li><div class="button"><div class="buttonContent"><button type="button" class="close">取消</button></div></div></li></ul></div></form></div></div>由于回带方法“onsubmit="return iframeCallback(this, dialogAjaxDone)"”(具体什么原因现在也没搞清楚……),导入成功后的提示信息不能像之前一样在“views.py”添加“return HttpResponse(simplejson.dumps({"statusCode":200, "navTabId":request.POST.get('navTabId', 'bookindex'), "callbackType":request.POST.get('callbackType', None), "message":u'删除成功', "info":u'删除成功', "result":u'删除成功'}), mimetype='application/json')”显示提示信息,而是通过“success.html”显示,显示效果一样。
在“library/templates/book”下添加“success.html”,代码如下:
{"statusCode":"200","message":"\u64cd\u4f5c\u6210\u529f","navTabId":"bookindex","rel":"","callbackType":"closeCurrent","forwardUrl":"","confirmMsg":""}
5. 在图书主页面添加导入导出按钮
在“library/templates/book/basepage.html”的“toolBar”中添加如下代码:
<li class="line">line</li>
<li><a class="icon" href="{% url books_uploadfile %}" target="dialog" mask="true" width="500", height="300", title="导入CSV文件" rel="uploadfileresource"><span>导入CSV文件</span></a></li><li><a class="icon" href="{% url books_downloadfile %}" target="dwzExport" targetType="navTab" title="确定要导出这些记录吗?"><span>导出CSV文件</span></a></li>
6. 运行
图书管理主界面
导入文件界面
- Django 一个简单的图书管理程序(六 添加CSV文件导入导出操作)
- Django 一个简单的图书管理程序(五 通过查询添加借阅人)
- Django 一个简单的图书管理程序(一建立项目)
- Django 一个简单的图书管理程序 (三 展示)
- Django 一个简单的图书管理程序(四 编写图书管理)
- Django 一个简单的图书管理程序(二编写借阅人管理)
- JAVA操作csv文件(导入导出)
- 一个简单的文件管理程序
- java实现CSV文件的导入导出操作
- django导出csv文件的编码问题
- csv文件导入导出
- csv文件导入导出
- Qt中csv文件的导入与导出(zz)
- C#的CSV文件导入导出
- CSV操作(导出和导入)
- CSV操作(导出和导入)
- oracle数据库表导出和导入csv文件操作
- Oracle数据库表导出和导入csv文件操作
- 一网打尽18种主流数据库:12种SQL+6种NoSQL
- 关于HTTP服务器每个客户端2个连接的限制
- HDU 1258 Sum It Up(哈希表判重)
- Debian自动挂载U盘,移动硬盘错误解决办法
- 在xpage的表单页面打开另一表单页面
- Django 一个简单的图书管理程序(六 添加CSV文件导入导出操作)
- ubuntu使盘符不在桌面上显示
- js 验证身份证号码
- HDOJ 1242 Rescue (BFS+优先队列)
- java基础---->Java常用类库
- 异步通信之我见(一)
- Cocos2D游戏开发中文版重点摘取
- (读书笔记)Mysql alter table
- nodejs 之 path module