¿Cómo paso variables de una vista a otra y renderizo con la URL de la última vista en Django?

Estoy construyendo un sistema de gestión de estudiantes usando Django.

En este código, el usuario busca a un alumno con la consulta cifradaname=StudentName&grade=Grade&id=StudentID&phone=ParentPhoneNumber&report=StudentReportNumber, que se extrae con eldecrypt() método.

Estos son los dos métodos, el que procesa la consulta y el que muestra el perfil del alumno.

No se guardan datos de la consulta en la base de datos, pero se utilizarán para consultar los detalles del alumno desde la base de datos.

def process_query(request):
    # process the query from the url /?details={{ some hashes here }}

    if request.method == 'GET':
        raw_deatils = request.GET.get('details', None)
        if raw_deatils:
            details = decrypt(raw_deatils)
            # decrypt is a function that is defined
            # in the utils which takes the input string,
            # check predeifined tests to test if valid.
            # and return the decrypted query string else None

            if details:

            # now the decrypted message looks something like this.
            # name=StudentName&grade=Grade&id=StudentID&phone=
            # ParentPhoneNumber&report=StudentReportNumber
            # some more processing pulls out value to variables,

                name = details['StudentName'],
                grade = details['Grade'],
                student_id = details['StudentID'],
                phone = details['ParentPhoneNumber'],
                report = details['StudentReportNumber'],
                search_token = details['token']
                return redirect("somewhere I'm stuck")
            else:
                # encryption error, so redirect user to query page
        else:
            # error with submission redirect to query page
    else:
        # error with method. redirect to homepage.

def student_profile(request, name=None, grade=None, student_id=None):
# token to be added??

    # some data processing to get marks,
    # progress report. etc
    if student_id:
        context = {
            'name' : name,
            'grade' : grade,

            'student_id' : student_id,
            'report' : report,
            'marks': {
                # another dictionary of dictionaries
                # as the product of the processing
            },
            'token' : token,
            'attendance': {
                # another dicitonary of stuff.
            }
    else:

        context = {
            'name' : name,
            'grade' : grade,
        }

    return render(request, 'students/profile/single.html', context)

urls para esto,

url(r'^go/$', 'students.views.process_query' name='process_view'),
url(r'^profile/(?P<name>[a-zA-Z]{1,20})/(?P<grade>[a-zA-Z]{1,20})$',
 'students.views.student_profile', name='profile_view'),

cuandoprofile_view&nbsp;se llama sin 'vista_proceso', solo se deben mostrar el nombre y el grado. Si elprofile_view&nbsp;es iniciado por elprocess_view&nbsp;Se debe representar el contexto con la asistencia y las calificaciones.

Esto funciona hasta queprocess_view&nbsp;redirigir, pero no tengo ni idea de dónde debería redirigir (o incluso ¿debería redirigir?atascado) y llamando alprofile_view.

Entonces el resumen de la pregunta,

¿Cómo redirijo desdeprocess_view&nbsp;aprofile_view&nbsp;sin perder los datos recopilados enprocess_view&nbsp;alprofile_view&nbsp;y renderizar el contenido con la url deprofile_view? No quiero eltoken&nbsp;ystudent_id&nbsp;que se mostrará en la url.

Gracias por cualquier sugerencia / ayuda.