如何在Django中分别执行两个功能?

问题描述 投票:0回答:1

我已经使用https://www.pythoncircle.com/中准备的代码来使用Django导入和导出excel文件。下面提供了此代码:

from Django.shortcuts import render
import openpyxl

views.py file:
def index(request):
    if "GET" == request.method:
        return render(request, 'myapp/index.html', {})
    else:
        excel_file = request.FILES["excel_file"]

        wb = openpyxl.load_workbook(excel_file)

        worksheet = wb["Sheet1"]
        print(worksheet)

        excel_data = list()
        for row in worksheet.iter_rows():
            row_data = list()
            for cell in row:
                row_data.append(str(cell.value))
            excel_data.append(row_data)

        return render(request, 'myapp/index.html', {"excel_data":excel_data})

import xlwt
from django.http import HttpResponse


def download_excel_data(request):
    response = HttpResponse(content_type='application/ms-excel')
    response['Content-Disposition'] = 'attachment; filename="ThePythonDjango.xls"'
    wb = xlwt.Workbook(encoding='utf-8')
    ws = wb.add_sheet("sheet1")
    row_num = 0

    font_style = xlwt.XFStyle()
    font_style.font.bold = True


    columns = ['Column 1', 'Column 2', 'Column 3', 'Column 4', ]
    for col_num in range(len(columns)):
        ws.write(row_num, col_num, columns[col_num], font_style)

    # Sheet body, remaining rows
    font_style = xlwt.XFStyle()


    wb.save(response)
    return response

urls.py file:
from django.urls import path
from django.http import HttpResponse

from . import views

app_name = "myapp"


urlpatterns = [

    path('', views.index, name='index'),
    path('', views.download_excel_data, name='download_excel_data'),

]

当我运行所描述的代码时,仅执行索引函数。而当我将urlpatterns更改为:urlpatterns = [

    path('', views.download_excel_data, name='download_excel_data'),
    path('', views.index, name='index'),    
]

将执行download_excel_data函数。如何分别执行两个功能?在此先感谢

django python-3.x django-models django-views django-urls
1个回答
0
投票

[DJANGO搜索URLS.py时,它正在搜索第一个匹配项。找到匹配项后,搜索结束,并提供URL中要求的功能。在使用诸如Vue或React之类的前端应用程序时,实际上可以利用这种行为来发挥自己的优势。

因此,当您拥有第一个索引时,DJANGO将URL与索引匹配,并执行索引视图。当您首先使用download_excel_data更改它们时,它将首先匹配,因此将执行。

如果您希望它们都一起执行,最简单的方法是将它们组合成一个视图。

通常,对于以下所有功能,python导入通常位于文件的顶部。在函数之间看到import语句似乎很奇怪。如果您感兴趣,PEP8中涵盖了有关Python的一大堆约定。

摘要:将它们合并在一个视图下。

© www.soinside.com 2019 - 2024. All rights reserved.