Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

169
Vistas
Redirigir a la misma página después de que el formulario enviado en views.py no funciona mientras se usa el paginador de Django

Quiero redirigir a la misma página después de enviar el formulario que obtiene la vista de views.py. El problema es el paginador. Después de enviar el formulario de Django, la página se vuelve a cargar en la página 1. Quiero que el navegador permanezca en la misma página después de enviar el formulario. Aparece el error: django.urls.exceptions.NoReverseMatch: 'http' no es un espacio de nombres registrado. ¡La ayuda sería muy apreciada!

Ruta de llamada de código en js:

 let path = window.location.href

Obteniendo API:

 subedit[i].addEventListener('click', () => { fetch(`/edit/${content[i].id}`, { method: 'POST', headers: {'X-CSRFToken': csrftoken}, mode: 'same-origin', body: JSON.stringify({ post: textarea[i].value, page: path })}).then(() => { editdiv[i].style.display = 'none'; post[i].style.display = 'block'; })})

vistas.py:

 def edit(request, post_id): data = json.loads(request.body) content = data.get("post", "") post=Post.objects.get(id=post_id) page = data.get("page", "") if request.method == "POST": if post.user == request.user: post.post=content post.save() return HttpResponseRedirect(reverse(str(page)))
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Pude hacerlo funcionar usando sesiones:

 <a id="page" class="page-link">{{ num }}</a>
 let page=document.querySelector("#page").innerHTML fetch(`/edit/${content[i].id}`, { method: 'POST', headers: {'X-CSRFToken': csrftoken}, mode: 'same-origin', body: JSON.stringify({ post: textarea[i].value, page: page })}).then(() => { editdiv[i].style.display = 'none'; post[i].style.display = 'block'; })})
 def edit(request, post_id): data = json.loads(request.body) content = data.get("post", "") post=Post.objects.get(id=post_id) page = data.get("page", "") request.session['page'] = page if request.method == "POST": if post.user == request.user: post.post=content post.save() return HttpResponse(page)
 def index(request): posts = Post.objects.all().order_by('-date') paginator = Paginator(posts,10) page_number = request.GET.get('page') if request.session.has_key('page'): page_number = request.session['page'] del request.session['page']
about 4 years ago · Juan Pablo Isaza Denunciar

0

reverse(…) [Django-doc] busca una vista con el nombre dado, no toma una URL como entrada. Puede usar esto directamente en HttpResponseRedirect [Django-doc] , así que:

 def edit(request, post_id): data = json.loads(request.body) content = data.get("post", "") post=Post.objects.get(id=post_id) page = data.get("page", "") if request.method == 'POST': if post.user == request.user: post.post=content post.save() return HttpResponseRedirect( page )

También debe devolver HttpResponse s para las solicitudes GET, y en caso de que post.user no sea el mismo que request.user .


Nota : a menudo es mejor usar get_object_or_404(…) [Django-doc] , luego usar.get(…) [Django-doc] directamente. En caso de que el objeto no exista, por ejemplo porque el usuario alteró la URL, get_object_or_404(…) dará como resultado una respuesta HTTP 404 Not Found , mientras que usar .get(…) dará como resultado un error de servidor HTTP 500 .


Nota : puede limitar las vistas a una vista para usuarios autenticados con el decorador @login_required [Django-doc] .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda