[PYTHON] Erstellen Sie mit Django einen Datei-Uploader

Aktualisiert für alte Informationen und hässlichen Code. (2017/03/16)

Umgebung

Endgültige Konfiguration

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

Ich denke, es wäre schön, wenn es eine solche Struktur hätte. __pycache__ wird weggelassen

installieren

Projekterstellung

$ pip install Django==1.9.1
$ django-admin.py startproject file_uploader
$ cd file_uploader
$ django-admin.py startapp upload_form
#Ich möchte überprüfen, welche Datei wann hochgeladen wurde
$ python manage.py createsuperuser

Ändern Sie 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', #hinzufügen
)

・ ・ ・

LANGUAGE_CODE = 'ja'

TIME_ZONE = 'Asia/Tokyo'

・ ・ ・

Ich frage mich, ob es sein sollte

Bestätigen Sie vorerst

$ python manage.py migrate
$ python manage.py runserver

http://127.0.0.1:8000

Wenn Sie darauf zugreifen und das Beispiel nicht verfügbar ist, ist es in Ordnung

Erstellen einer upload_form App

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)

Dateiname: Dateiname upload_time: Datum und Uhrzeit hochladen (Standard ist das aktuelle Datum und die aktuelle Uhrzeit)

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

Vorlage

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>Datei-Uploader</title>
    </head>
    <body>
        {% block content %}
            {{ content }}
        {% endblock %}
    </body>
</html>

upload_form/templates/upload_form/form.html


{% extends "upload_form/base.html" %}

{% block title %}Uploader-Beispiel{% endblock title %}
{% block content %}
    <form method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="file">
        <input type="submit" value="hochladen">
    </form>
{% endblock content %}

upload_form/templates/upload_form/complete.html


{% extends "upload_form/base.html" %}

{% block title %}Upload abgeschlossen{% endblock title %}
{% block content %}
    <div align="center">
        <h1 align="center">Upload abgeschlossen</h1>
        <a href="{% url 'upload_form:form' %}"><button>Rückkehr</button></a>
    </div>
{% endblock content %}

Hochladen Vielleicht gibt es kein Zielverzeichnis! Weil du vielleicht wütend wirst Erstellen Sie ein Verzeichnis mit einer Struktur wie "upload_form / static / files /".

URL-Einstellung

urls.py

Erstellen Sie eine neue "upload_form / urls.py" und gehen Sie wie folgt vor

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

Django Admin Site Einstellungen

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)

Ermöglichen das Anzeigen und Bearbeiten von Daten auf der Django-Verwaltungssite

Migration & Start

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py runserver

http://127.0.0.1:8000 Wenn Sie besuchen, sehen Sie eine beschissene Webseite. Wenn Sie es von dort richtig hochladen, wird es funktionieren.

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

http://127.0.0.1:8000/admin/ Gehen Sie zu und melden Sie sich an http://127.0.0.1:8000/admin/upload_form/filenamemodel/ Stellen Sie sicher, dass Sie die Daten haben, wenn Sie eingeben! !!

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

Aus irgendeinem Grund handelt es sich bei den hochgeladenen Dateien nur um iOS-Zertifikat- und p12-Dateien. Es tut mir leid, aber ich konnte dies bestätigen!

Der Rest backt oder kocht.

Als ich letztes Jahr an meiner Graduiertenschule eine CSV-Datei hochgeladen habe, habe ich den Inhalt gelesen und in die DB-Tabelle eingefügt.

Repository

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

Repository-Link

Recommended Posts

Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie eine Homepage mit Django
Erstellen Sie eine große Textdatei mit Shellscript
VM mit YAML-Datei (KVM) erstellen
Erstellen Sie einen Django-Zeitplan
Datei-Upload mit Django
Erstellen Sie eine mit tkinter erstellte ausführbare GUI-Datei
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Erstellen Sie mit Python eine Datei im Photoshop-Format (.psd)
Machen Sie einen Zylinder mit open3d + STL-Dateiausgabe
Erstellen Sie eine Dummy-Datendatei
Erstellen Sie einen Django-Anmeldebildschirm
Erstellen Sie ein Verzeichnis mit Python
Erstellen Sie eine Xlsx-Datei mit XlsxWriter
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
[Python] Erstellen Sie mit cx_Freeze eine Verteilungsdatei für das Tkinter-Programm
Todo-App mit Django erstellen ⑤ Funktion zum Bearbeiten von Aufgaben erstellen
Erstellen Sie eine Django-Umgebung mit Docker-Compose (MariaDB + Nginx + uWSGI).
Erstellen Sie eine 2D-CAD-Datei ".dxf" mit Python [ezdxf]
[Python] Erstellen Sie mit tkinter einen Bildschirm zur Datei- und Ordnerpfadspezifikation
Schritte zum Erstellen eines Django-Projekts
Erstellen Sie eine Deb-Datei mit Docker
Stellen Sie die Django-Anwendung mit Docker bereit
Erstellen Sie eine virtuelle Umgebung mit Python!
Erstellen Sie eine Binärdatei in Python
Django-Tipps - Erstellen Sie eine Ranking-Site mit Django-
Erstellen Sie eine 1-MByte-Zufallszahlendatei
Machen Sie einen Filter mit einer Django-Vorlage
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Erstellen Sie mit Django eine API für die soziale Integration von Smartphone-Apps
Erstellen Sie mit Django einen LINE-Bot
[Python] Erstellen Sie mit Django einen Bildschirm für den HTTP-Statuscode 403/404/500
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Rails-Benutzer versuchen, mit Django eine einfache Blog-Engine zu erstellen
Erstellen Sie eine REST-API, um dynamodb mit dem Django REST Framework zu betreiben
Erstellen Sie eine CP932-CSV-Datei für Excel mit Chalice und geben Sie sie zurück
Erstellen Sie mit Class einen Python-Funktionsdekorator
Erstellen einer einfachen Power-Datei mit Python
Erstellen Sie eine RESTful-API mit dem Django Rest Framework
Erstellen Sie ein Modell für Ihren Django-Zeitplan
[Python] Erstellen Sie mit Anaconda eine virtuelle Umgebung
Erstellen wir mit Python eine kostenlose Gruppe
Erstellen Sie schnell eine Excel-Datei mit Python #python
Erstellen Sie eine GUI-App mit Tkinter of Python
Erstellen Sie ein Sternensystem mit Blender 2.80-Skript
Erstellen eines Anmeldebildschirms in Django all auth
Erstellen Sie mit Django Updateview einen Update-Bildschirm
Erstellen Sie eine einfache Web-App mit Flasche
Erstellen Sie eine Excel-Datei mit Python + Ähnlichkeitsmatrix
Erstellen Sie mit Python 3.4 einen Worthäufigkeitszähler
Erstellen der ersten App mit Django Startprojekt
Erstellen Sie eine Deb-Datei aus einem Python-Paket
Hinweise zum Aktivieren von PostgreSQL mit Django