class FilesModel(models.Model): """ 文件名稱""" # file = models.FileField(upload_to='demo_files/%Y/%m/%d/') file = models.FileField(upload_to='demo_files/%Y/%m/%d/%H:%M:%S') date = models.DateTimeField(auto_now=True) name = models.CharField(max_length=30, blank=True, null=True) class ContentModel(models.Model): """文件內容""" filed_ids = models.CharField(max_length=20) name = models.CharField(max_length=20) sex = models.CharField(max_length=10) age = models.CharField(max_length=20) desc = models.CharField(max_length=200) file = models.ForeignKey(FilesModel)
def handle_uploaded_file(file): """ 讀取excle 文件存入數據庫""" return excel_reader_dict(file=file) def upload_file(request): if request.method == 'POST': form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): file = request.FILES['file'] time_str = now().strftime('/%Y/%m/%d/%H:%M:%S') # path = '/Users/fiz/Desktop/my/demo_files' path = '/home/my/demo_files' path = path + time_str + '/' + file.name print(path) new_file = form.save() # 名稱是否重複 new_file.name = file.name new_file.save() try: datas = handle_uploaded_file(path) print(datas) for data in datas: ContentModel.objects.create(name=data.get('name'), filed_ids=data.get('id'), sex=data.get('sex'), age=data.get('age'), desc=data.get('desc'), file=new_file ) alert_message = True print(alert_message) return render(request, 'demo/upload.html', {'form': form, 'succcess': alert_message}) except Exception or IndexError or ValueError as ex: print(ex.args) FilesModel.objects.filter(id=new_file.pk).delete() return HttpResponse("文件或者數據格式不對,請查看後上傳") else: form = UploadFileForm() return render(request, 'demo/upload.html', {'form': form})
# -*- coding:utf-8 -*- """ Created by FizLin on 2017/07/31/-下午2:54 mail: https://github.com/Fiz1994 """ from django.forms import ModelForm from demo.models import FilesModel, CommentModel class UploadFileForm(ModelForm): class Meta: model = FilesModel fields = ('file',) class CommentForm(ModelForm): class Meta: model = CommentModel fields = '__all__'
# -*- coding:utf-8 -*- """ Created by FizLin on 2017/07/31/-下午2:58 mail: https://github.com/Fiz1994 """ from django.conf.urls import url, static from demo.views import upload_file, success, home, view_excle_web, comment, delete_data,delete_excle from django.conf import settings urlpatterns = [ url(r'/upload/$', upload_file, name='upload_file'), url(r'/success/url/$', success, name='success'), url(r'/home/$', home, name='home'), url(r'/comment/$', comment, name='comment'), url(r'/delete_data/$', delete_data, name='delete_data'), url(r'/view_excle_web/(?P<id>\d+)/$', view_excle_web, name='view_excle_web'), url(r'/delete_excle/$', delete_excle, name='delete_excle'), ]
<div class="container"> <div class="row"> <div class="col-md-2"></div> <div class="col-md-8"> <h2 style="font-style: italic; font-family: 'Microsoft Sans Serif', Tahoma, Arial, Verdana, Sans-Serif"> upload file test</h2> </div> <div class="col-md-2"></div> </div> </div> <div class="container"> <div class="col-md-3"></div> <div class="col-md-6"> {% block content %}{% endblock %} </div> <div class="col-md-3"></div> </div>
{% extends 'demo/base.html' %} {% block title %} home-upload file {% endblock %} {% block content %} <form action="{% url 'home' %}" method="post"> {% csrf_token %} <input type="text" placeholder="文件名稱,時間" name="condition"> <button type="submit" class=""> 查找</button> </form> <hr/> <p>你已經上傳過的文件</p> <ul> <li></li> {% for file in files %} <li> {# <a href="{% url 'view_excle_web' id=file.id %}">{{ file.name }}-上傳時間 {{ file.date|date:'Y-m-d G:i:s' }}</a>#} <p> <a href="{% url 'view_excle_web' id=file.id %}">{{ file.name }}-上傳時間 {{ file.date|date:'Y-m-d G:i:s' }}</a> <a class="btn-danger" href="{% url 'delete_excle' excel_id=file.id %}">delete</a> </p> </li> {% endfor %} </ul> {% endblock %}
{% extends 'demo/base.html' %} {% block title %} upload file {% endblock %} {% block content %} {% if succcess %} <script> alert("上傳成功,你能夠返回首頁查看"); </script> {% endif %} {% if error_info %} <script> alert({{ error_info }}); </script> {% endif %} <p> 請按照這個格式製做excel 文件進行測試,由於列數至關於數據庫中的列名稱,多餘的會被扔掉</p> <img src="https://fizblog.cn/media/uploads/2017/07/31/snip20170731_1.png" alt=""> <form method="post" enctype="multipart/form-data"> {% csrf_token %} {{ form.as_p }} <button type="submit" class="btn-default">Upload</button> </form> {% endblock %}
git@github.com:Fiz1994/inter.githtml