Llamar a una URL especial (no HTTP) desde el método form_valid de una vista basada en clases de Django

Hay un truco de HTML en el que si haces New SMS Message , hacer clic en Nuevo mensaje SMS abre la aplicación SMS nativa del teléfono y llena el campo To con el número proporcionado (1-408-555-1212 en este caso), y el body con el mensaje proporcionado ( Hello my friend en este caso).

¿Hay alguna manera de que pueda llamar a esta misma cadena href desde el método form_valid de una vista basada en clases de Django? Para ser exactos, en este método de form_valid estoy recibiendo una variable POST que es un uuid . Necesito usar ese uuid en la sección del body de la cadena href que he escrito en el ejemplo anterior.

Nota: probé el enfoque seguido en esta respuesta: Django 1.4 – Redireccionar a URL no HTTP No resuelve mi problema; en realidad no redirigí a ninguna parte, ni recibo un error. La URL en el navegador tampoco cambia.

Mi código es:

 class UserPhoneNumberView(FormView): form_class = UserPhoneNumberForm template_name = "get_user_phonenumber.html" def form_valid(self, form): phonenumber = self.request.POST.get("mobile_number") unique = self.request.POST.get("unique") url = "http://example.com/"+unique response = HttpResponse("", status=302) body = "See this url: "+url nonhttp_url = "sms:"+phonenumber+"?body="+body response['Location'] = str(nonhttp_url) return response 

Creo que deberías probar la sugerencia de @ Selcuk: devolver una plantilla desde FormView con código HTML similar a:

       Waiting message   

Entonces tu vista django se convertiría en:

 from urllib import quote from django.shortcuts import render class UserPhoneNumberView(FormView): form_class = UserPhoneNumberForm template_name = "get_user_phonenumber.html" def form_valid(self, form): phonenumber = self.request.POST.get("mobile_number") unique = self.request.POST.get("unique") url = "http://example.com/"+unique body = quote("See this url: "+url) nonhttp_url = "sms:"+phonenumber+"?body="+body context = {'url': nonhttp_url} return render(request, 'theTemplate.html', context) 

Acabo de probarlo en mi teléfono y me redirigieron a mi aplicación de SMS.