Tengo una función javascript en una vista de django que se supone que redirigirá al usuario a una URL diferente que contiene un parámetro de consulta. Cuando imprimo la url antes de asignarla a window.location, coincide con el patrón de url como se esperaba. Sin embargo, una vez que asigno la URL a window.location, parece agregar la URL a la ya existente en lugar de reemplazarla y, por lo tanto, no puede encontrar el patrón de URL coincidente.
Función Javascript:
function downloadEvidence() { var product_review_ids = getProductReviewIDs(); if (product_review_ids === '') { window.alert("Please select at least one deployment.") return; } var url = window.location.href + "download_evidence?productReviewIDs=" + product_review_ids console.log(url); //prints: http://127.0.0.1:8000/access-review-owner/configure/new%20test%20product/download_evidence?productReviewIDs=14 window.location = url; }El patrón de URL que se supone que debe coincidir:
urlpatterns = [ path('access-review-owner/configure/<str:product_name>/download_evidence/',views.download_evidence_view, name='download_evidence_view'), ]La vista a la que se supone que debe navegar:
@require_http_methods(['GET']) def download_evidence_view(request, product_name): product_id = request.GET.get('productReviewIDs', None) print(product_id) ''' NOTE: Package up evidence here ''' return HttpResponseRedirect(os.environ['BASE_URL']+f'access-review-owner/configure/{product_name}/download_evidence/')La URL que intenta encontrar cuando asigno la correcta a window.location:
GET http://127.0.0.1:8000/access-review-owner/configure/new%20test%20product/download_evidence/access-review-owner/configure/new%20test%20product/download_evidence/Intenta agregar este código
function downloadEvidence() { var product_review_ids = getProductReviewIDs(); var product_name = //try to get you product name if (product_review_ids === '') { window.alert("Please select at least one deployment.") return; } var url = `${window.location.origin}/${product_name}/download_evidence?productReviewIDs=${product_review_ids}` console.log(url); //prints: http://127.0.0.1:8000/access-review-owner/configure/new%20test%20product/download_evidence?productReviewIDs=14 window.location.assign(url); }