Django 간단한 도서 관리자 (6 CSV 파일 가져오기 내보내기 추가)

5809 단어 DjangoPython
도서 정보 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 forms

class 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
' or line1 =='\r' or line1 == '
' or line1 == '': break arg = line1.split(',') publicationTime = arg[3].rstrip('\r
') 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
' or line2 =='\r' or line2 == '
' or line2 == '': break arg = line2.split(',') publicationTime = arg[3].rstrip('\r
') 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. 가져오기 파일 템플릿 추가
가져오기 파일 템플릿 "book list.csv"추가
5. 가져오기 인터페이스 추가
"library/templates/book"에 "upload.html"을 추가하면 코드는 다음과 같습니다.
{% csrf_token %} {% load static %}

리콜 방법 때문"οnsubmit = "return iframe Callback(this, dialog AjaxDone)"(구체적으로 어떤 이유인지는 지금도 밝혀지지 않았지만...),성공적으로 가져온 알림 정보는 이전과 같이'views.py'에서'return HttpResponse(simplejson.dumps('statusCode': 200,'navTabId': request.POST.get('navTabtId','bookindex'),'callbackType': 200,'navTabIbId': RequestTabTabId': request.POvTabId': Request.PAvTabId''navTabId': Request.Pone': requne': requne),'message''message': usage': u'umimetype="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"에 다음 코드를 추가합니다.
  • line
  • CSV 파일 가져오기
  • CSV 파일 내보내기

  • 6. 실행
    도서 관리 메인 인터페이스
    가져오기 파일 인터페이스

    좋은 웹페이지 즐겨찾기