前提・実現したいこと
DjangoでCSVのアップロードフォームを作成したいです。
DjangoでCSVファイルをアップロードし、データを操作するために、アップロードフォームを作りたいのですが、うまくいきません。
サイト(https://qiita.com/nnsnodnb/items/f7b1b0b7f2099e403947)を参考にしてみたのですが、ファイルをアップロードするとPage not found(404)が生じてしまっている状態です。
サイトのものとはDjangoのバージョンが異なるため、自分で書き換えた個所があり、それが影響しているのかとも思いますが、いかんせん初心者のためよくわからない状況です。
発生している問題・エラーメッセージ
Page not found (404)
Request Method: GET
Request URL: http://localhost:8000/complete/
Using the URLconf defined in file_uploader.urls, Django tried these URL patterns, in this order:
admin/ [name='form'] complete [name='complete']
The current path, complete/, didn't match any of these.
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
該当のソースコード
Django
1#プロジェクト名:file_uoloader 2#アプリ名:upload_form 3 4# file_uploader/urls.py 5###コメント行は省略いたします### 6 7from django.contrib import admin 8from django.urls import path, include 9 10 11urlpatterns = [ 12 path('admin/', admin.site.urls), 13 path('', include('upload_form.urls')), 14]
Django
1 2# upload_form/urls.py 3 4from django.urls import path 5from . import views 6 7urlpatterns = [ 8 path('', views.form, name = 'form'), 9 path('complete', views.complete, name = 'complete'), 10]
Django
1# upload_form/views.py 2 3from django.shortcuts import render, redirect 4from django.template.context_processors import csrf 5from django.conf import settings 6from upload_form.models import FileNameModel 7import sys, os 8UPLOADE_DIR = os.path.dirname(os.path.abspath(__file__)) + '/static/files/' 9 10# Create your views here. 11 12def form(request): 13 if request.method != 'POST': 14 return render(request, 'upload_form/form.html') 15 16 file = request.FILES.get('file', False) 17 18 path = os.path.join(UPLOADE_DIR, file.name) 19 destination = open(path, 'wb') 20 21 for chunk in file.chunks(): 22 destination.write(chunk) 23 24 insert_data = FileNameModel(file_name = file.name) 25 insert_data.save() 26 27 return redirect(to='complete/') 28 29def complete(request): 30 return render(request, 'upload_form/complete.html') 31
Django
1# upload_form/templates/upload_form/base.html 2 3<!DOCTYPE html> 4<html lang="ja"> 5 <head> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <meta name="viewport" content="content"> 8 <title>ファイルアップローダ</title> 9 </head> 10 <body> 11 {% block content %} 12 {{ content }} 13 {% endblock %} 14 </body> 15</html>
Django
1 2# upload_form/templates/upload_form/complete.html 3 4{% extends "upload_form/base.html" %} 5 6{% block title %}アップロード完了{% endblock title %} 7{% block content %} 8 <div align="center"> 9 <h1 align="center">アップロード完了</h1> 10 <a href="{% url 'upload_form:form' %}"><button>戻る</button></a> 11 </div> 12{% endblock content %}
Django
1 2# upload_form/templates/upload_form/form.html 3 4{% extends "upload_form/base.html" %} 5 6{% block title %}アップローダサンプル{% endblock title %} 7{% block content %} 8 <form method="POST" enctype="multipart/form-data"> 9 {% csrf_token %} 10 <input type="file" name="file"> 11 <input type="submit" value="アップロード"> 12 </form> 13{% endblock content %}
試したこと
views.pyのredirectがおかしいのかとも思い、書き換えるなどしてみましたが同じように404エラーが出ました。
補足情報(FW/ツールのバージョンなど)
Python 3.6.5
Django 2.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/25 08:30
2018/07/25 09:07
2018/07/25 09:19