【发布时间】:2019-04-18 03:33:51
【问题描述】:
我上个月开发了一个名为“dms”的 django 项目和一个名为“add_excel”的应用程序。该应用程序从网页接收 excel 文件并将数据存储到 mysql 数据库中。今天又加了两个app,“add_struc”和“homepage”,应该是另外一个function app和homepage app。但奇怪的事情出现了。在我点击“add_excel”应用程序中的“上传”按钮后,它不是原来的功能,而是重定向到“主页”而不对数据库做任何事情。
VS 代码显示:
[18/Apr/2019 11:08:00] "GET / HTTP/1.1" 200 317 # 我打开了 主页 [18/Apr/2019 11:08:02] "GET /addexcel/index/ HTTP/1.1" 200 1341 # 我点击了“add_excel”应用超链接 [18/Apr/2019 11:08:20] "POST /homepage/index/ HTTP/1.1" 200 317 #
我点击了“上传”,但它再次将我重定向到主页。
如果我删除整个项目的urls.py中的主页url,然后再次点击上传按钮,它会说:
找不到页面 (404) 请求方法:POST 请求 URL:http://127.0.0.1:8000/homepage/index/ 使用定义的 URLconf 在 dms.urls 中,Django 按以下顺序尝试了这些 URL 模式:
^admin/ ^$ [name='index'] ^addexcel/ ^addstruc/ 当前路径, 主页/索引/,与其中任何一个都不匹配。
dms项目中的urls.py:
from django.contrib import admin
from django.conf.urls import url, include
from homepage.views import index # default homepage
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$', index, name='index'), # homepage
url(r'^addexcel/', include('add_excel.urls')),
url(r'^addstruc/', include('add_struc.urls')),
]
add_excel 应用中的 urls.py:
from django.conf.urls import url
from django.urls import path
from django.contrib import admin
from add_excel.views import IndexView
urlpatterns = [
url(r'index/', IndexView.as_view(), name ='index'),
]
add_struc 应用中的 urls.py:
from django.conf.urls import url
from django.urls import path
from django.contrib import admin
from add_struc.views import IndexView
urlpatterns = [
url(r'index/', IndexView.as_view(), name ='index'),
]
首页应用中的urls.py:
from django.conf.urls import url
from django.urls import path
from django.contrib import admin
from homepage.views import index
urlpatterns = [
url(r'index/', index, name='index'),
]
add_excel 应用中的views.py:
# -*- coding:utf-8 -*-
import os
import os.path
import sys
import datetime
from builtins import int
from django.db import models
from django.shortcuts import render
from django.views import View
import pymysql
import xlrd
from xlrd import xldate_as_tuple
# Create your views here.
class IndexView(View):
template_name = 'add_excel/index.html'
context={}
def get(self, request):
return render(request, 'add_excel/index.html', {})
def post(self, request):
# if request.method == 'POST' and 'excel_file' in request.POST:
if request.method == 'POST' and request.FILES["excel_file"]:
# do something
return render(request, 'add_excel/index.html', {"excel_data":excel_data})
【问题讨论】: