Mis à jour pour les anciennes informations et le code laid. (16/03/2017)
file_uploader
├── db.sqlite3
├── file_uploader
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── requirements.txt
└── upload_form
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ ├── 0001_initial.py
│ └── __init__.py
├── models.py
├── static
│ └── files
│ └── __init__.py
├── templates
│ └── upload_form
│ ├── base.html
│ ├── complete.html
│ └── form.html
├── tests.py
├── urls.py
└── views.py
Je pense que ce serait bien s'il avait une structure comme celle-ci. «pycache» est omis
$ pip install Django==1.9.1
$ django-admin.py startproject file_uploader
$ cd file_uploader
$ django-admin.py startapp upload_form
#Je veux vérifier quel fichier a été téléchargé lorsque
$ python manage.py createsuperuser
settings.py
settings.py
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'upload_form', #ajouter à
)
・ ・ ・
LANGUAGE_CODE = 'ja'
TIME_ZONE = 'Asia/Tokyo'
・ ・ ・
Je me demande si ça devrait être
$ python manage.py migrate
$ python manage.py runserver
http://127.0.0.1:8000
Si vous accédez et que l'exemple est sorti, c'est OK
models.py
upload_form/models.py
from django.db import models
from datetime import datetime
class FileNameModel(models.Model):
file_name = models.CharField(max_length = 50)
upload_time = models.DateTimeField(default = datetime.now)
file_name
: nom de fichier
ʻUpload_time`: date et heure de téléchargement (la valeur par défaut est la date et l'heure actuelles)
views.py
upload_form/views.py
from django.shortcuts import render, redirect
from django.template.context_processors import csrf
from django.conf import settings
from upload_form.models import FileNameModel
import sys, os
UPLOADE_DIR = os.path.dirname(os.path.abspath(__file__)) + '/static/files/'
def form(request):
if request.method != 'POST':
return render(request, 'upload_form/form.html')
file = request.FILES['file']
path = os.path.join(UPLOADE_DIR, file.name)
destination = open(path, 'wb')
for chunk in file.chunks():
destination.write(chunk)
insert_data = FileNameModel(file_name = file.name)
insert_data.save()
return redirect('upload_form:complete')
def complete(request):
return render(request, 'upload_form/complete.html')
upload_form/templates/upload_form/base.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="content">
<title>Téléchargeur de fichiers</title>
</head>
<body>
{% block content %}
{{ content }}
{% endblock %}
</body>
</html>
upload_form/templates/upload_form/form.html
{% extends "upload_form/base.html" %}
{% block title %}Exemple de téléchargement{% endblock title %}
{% block content %}
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<input type="file" name="file">
<input type="submit" value="télécharger">
</form>
{% endblock content %}
upload_form/templates/upload_form/complete.html
{% extends "upload_form/base.html" %}
{% block title %}Téléchargement terminé{% endblock title %}
{% block content %}
<div align="center">
<h1 align="center">Téléchargement terminé</h1>
<a href="{% url 'upload_form:form' %}"><button>Revenir</button></a>
</div>
{% endblock content %}
Téléchargement Il n'y a peut-être pas de répertoire de destination! Parce que tu peux te mettre en colère Créez un répertoire avec une structure comme ʻupload_form / static / files / `.
urls.py
ʻUpload_form / urls.py` est nouvellement créé et le suivant
upload_form/urls.py
from django.conf.urls import url
from upload_form import views
urlpatterns = [
url(r'^$', views.form, name = 'form'),
url(r'^complete/', views.complete, name = 'complete'),
]
file_uploader/urls.py
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^', include('upload_form.urls', namespace = 'upload_form')),
]
admin.py
upload_form/admin.py
from django.contrib import admin
from upload_form.models import FileNameModel
class FileNameAdmin(admin.ModelAdmin):
list_display = ('id', 'file_name', 'upload_time')
list_display_links = ('id', 'file_name')
admin.site.register(FileNameModel, FileNameAdmin)
Autoriser l'affichage et la modification des données depuis le site de gestion de Django
$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver
http://127.0.0.1:8000 Lorsque vous visitez, vous verrez une page Web merdique. Si vous le téléchargez correctement à partir de là, cela fonctionnera.
http://127.0.0.1:8000/admin/ Accédez à et connectez-vous http://127.0.0.1:8000/admin/upload_form/filenamemodel/ Assurez-vous d'avoir les données lorsque vous entrez! !!
Pour une raison quelconque, les fichiers téléchargés ne sont que des fichiers de certificat iOS et p12, donc je suis désolé mais j'ai pu confirmer!
Le reste cuit ou bouillit.
Lorsque j'ai téléchargé un fichier CSV à mon école supérieure l'année dernière, j'ai lu le contenu et l'ai inséré dans la table DB.
https://github.com/nnsnodnb/django-file-uploader
Lien vers le référentiel
Recommended Posts