Aktualisiert für alte Informationen und hässlichen Code. (2017/03/16)
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
$ 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
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
$ 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
upload_form
Appmodels.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')
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 /".
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')),
]
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
$ 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.
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! !!
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.
https://github.com/nnsnodnb/django-file-uploader
Repository-Link
Recommended Posts