У меня много похожих вопросов о переполнении стека, но ни один из них не решает мою проблему.
У меня есть представление на основе классов, которое принимает файлы, и как только будет найден правильный файл, я бы хотел, чтобы веб-сайт перенаправлял пользователя к шаблону в другом приложении, передавая некоторые параметры.
Я видел, как другие помещали дополнительный путь в 'urlpatterns' и получали представление оттуда. Но это только делает GET-сигнал в моей командной строке, но не меняет URL-адрес.
views.py
from django.shortcuts import render, redirect # used to render templates
from django.http import JsonResponse
from django.views import View
from .forms import UploadForm
from .models import FileUpload
class UploadView(View):
def get(self, request):
files_list = FileUpload.objects.all()
return render(self.request, 'upload/upload.html', {'csv_files': files_list})
def post(self, request):
form = UploadForm(self.request.POST, self.request.FILES)
if form.is_valid():
csv_file = form.save()
data = {'is_valid': True,
'name': csv_file.file.name,
'url': csv_file.file.url,
'date': csv_file.uploaded_at}
# REDIRECT USER TO VIEW PASSING 'data' IN CONTEXT
return redirect('graph:chart', file_url=csv_file.file.url)
else:
data = {'is_valid': False}
return JsonResponse(data)
urls.py
from django.urls import path
from . import views
app_name = "upload"
urlpatterns = [
path('', views.UploadView.as_view(), name='drag_and_drop'),
]
urls.py (из другого приложения)
from django.urls import path
from . import views
app_name = "graph"
urlpatterns = [
path('', views.page, name='chart'),
]