Как загрузить файл и перенаправить его на другую страницу в django?

После входа в систему у меня появилась страница upload.html. Когда я нажимаю кнопку загрузить файл, я хочу показать страницу upload или другие страницы. Он снова перенаправляет на страницу входа в систему. Могу ли я узнать, в чем ошибка в моем коде?

Вот View.py

вход строго обязателен. Как только пользователь входит в систему, у меня появляется страница upload.html. У меня есть две группы: (Новый пользователь) и администрация.

@login_required(login_url='/registration/login/')
def login_request(request):
    if request.method == 'POST':
        form = AuthenticationForm(request=request, data=request.POST)
        if form.is_valid():
            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password')
            user = authenticate(username=username, password=password)
            if user is not None:
                login(request, user)
                messages.info(request, f"You are now logged in as {username}")
            return render(request, "upload.html")

    form = AuthenticationForm()
    return render(request = request,
                    template_name = "registration/login.html",
                    context={"form":form})


@unauthenticated_user
def login(request):
    """
    Creates login view
    Returns: rendered login page
    """
    return render(request, 'registration/login.html')


@allowed_users(allowed_roles=["administrator", "New user"])
def upload(request):
    if request.method == 'POST':
        if request.FILES.get('document'):
            file = request.FILES['document']
            
            workbook = load_workbook(filename=file, data_only=True)
            xls = workbook[workbook.sheetnames[0]] 
            
            result = []
            # macros check
            vba_parser = VBA_Parser(file)
            vba_modules = vba_parser.extract_all_macros()
            if vba_parser.detect_vba_macros():
                result.append("Caution, macros has been found in your excel file.")


            count = 0
            
            # check .exe, url 
            for i in range(1, xls.max_row+1):
                count = 0
                for cell in xls[i]:
                    for column_value in cell.value.split(','):
                        count = count + 1
                        if re.findall('http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+', str(column_value)):
                            message = str('found a url link in  row ', i ,' and column ', count)
                            result.append(message)

                        elif re.findall(r'\b\S*\.exe\b', str(column_value)):
                            message = str( 'found .exe file in  row ', i ,' and column ', count)
                            result.append(message)

                        elif count == len(xls[i]):
                            count = 0


            dic_result = { 'report': result}
            return render(request, 'upload.html', dic_result)
    return render(request, 'upload.html')

Вот url.py

from django.contrib import admin
from django.urls import path
from django.contrib.auth.views import LoginView
from excel import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('registration/login/', LoginView.as_view(), name='login'),
    path('registration/register/', views.register, name='register'),
    path('', views.login_request, name='home'),
    path('upload', views.upload, name='upload'),
    path('logout', views.logout_request, name='logout'),
]
Вернуться на верх