Créer un téléchargeur de fichiers avec Django

Mis à jour pour les anciennes informations et le code laid. (16/03/2017)

environnement

Configuration finale

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

installer

Création de projet

$ 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

Changer 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

Confirmer pour le moment

$ 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

Construction de l'application ʻUpload_form`

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')

modèle

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 / `.

Paramètre d'URL

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')),
]

Paramètres du site d'administration Django

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

Migration et lancement

$ 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.

スクリーンショット 2016-08-18 午後3.42.39.png

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! !!

スクリーンショット 2016-08-18 午後3.43.48.png

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.

Dépôt

https://github.com/nnsnodnb/django-file-uploader

Lien vers le référentiel

Recommended Posts

Créer un téléchargeur de fichiers avec Django
Créer une page d'accueil avec django
Créer un gros fichier texte avec shellscript
Créer une machine virtuelle avec un fichier YAML (KVM)
Créer un planning Django
Téléchargement de fichiers avec django
Créer un fichier exécutable GUI créé avec tkinter
Créer un fichier PDF avec une taille de page aléatoire
Créez un tableau de bord pour les appareils réseau avec Django!
Créez une application Hello World avec un seul fichier avec django
Créer un fichier au format Photoshop (.psd) avec python
Créer un cylindre avec une sortie de fichier open3d + STL
Créer un fichier de données factice
Créer un écran de connexion Django
Créer un répertoire avec python
Créer un fichier xlsx avec XlsxWriter
Essayez de créer une application Todo avec le framework Django REST
Créer une application Todo avec Django ③ Créer une page de liste de tâches
[Python] Créez un fichier de distribution pour le programme Tkinter avec cx_Freeze
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
Créer un environnement django avec docker-compose (MariaDB + Nginx + uWSGI)
Créer un fichier CAO 2D ".dxf" avec python [ezdxf]
[Python] Créez un écran de spécification de chemin de fichier et de dossier avec tkinter
Étapes pour créer un projet Django
Créer un fichier deb avec Docker
Déployer l'application Django avec Docker
Créez un environnement virtuel avec Python!
Créer un fichier binaire en Python
Django Tips-Créez un site de classement avec Django-
Créer un fichier de nombres aléatoires de 1 Mo
Créer un filtre avec un modèle django
Créez une API Web capable de fournir des images avec Django
Créer une application Todo avec Django ① Créer un environnement avec Docker
Créez une API d'intégration sociale pour les applications smartphone avec Django
Créer un bot LINE avec Django
[Python] Créer un écran pour le code d'état HTTP 403/404/500 avec Django
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Les utilisateurs de Rails essaient de créer un moteur de blog simple avec Django
Créer une API REST pour faire fonctionner dynamodb avec le Framework Django REST
Créer et renvoyer un fichier CSV CP932 pour Excel avec Chalice
Créer un décorateur de fonction Python avec Class
Créer un fichier power simple avec Python
Créer une API RESTful avec Django Rest Framework
Créez un modèle pour votre planning Django
[Python] Créez un environnement virtuel avec Anaconda
Créons un groupe gratuit avec Python
Créez rapidement un fichier Excel avec Python #python
Créer une application graphique avec Tkinter de Python
Créez un système stellaire avec le script Blender 2.80
Créer un écran de connexion dans Django all auth
Créer un écran de mise à jour avec Django Updateview
Créez une application Web simple avec Flask
Créer un fichier Excel avec Python + matrice de similarité
Créer un compteur de fréquence de mots avec Python 3.4
Création de la première application avec Django startproject
Créer un fichier deb à partir d'un package python
Remarques sur l'activation de PostgreSQL avec Django