Thanks Alec, That finally makes sense. However, I do have a question here:
def display_DHM(request): # Get results from session return render_to_response('ran_DHM.html', ...) '# Get results from session'???? Would I not just do this: def display_DHM(request): return render_to_response('DHM_ran.html', request.session, ...) Or do I have to explicitly get the session data? If so, how? On Thu, Sep 9, 2010 at 10:37 AM, Alec Shaner <asha...@chumpland.org> wrote: > I feel your pain - javascript has always been a pain for me, but libraries > like jQuery make it more bearable! > > AJAX calls are made in the background (usually asynchronously), so they > don't directly change the page you're currently viewing in your browser. The > browser is responsible for dispatching the response returned from your AJAX > call, typically by invoking a callback function you specified when the AJAX > request was initiated. So you don't do a redirect from the server, rather > you can do it using client side javascript in your callback function. > > Here is how it basically works: > 1. Please Wait page makes AJAX request to run_DHM, specifies callback > function when request completes. > 2. run_DHM performs calculations, stores results in session, returns an "OK" > response. > 3. Browser invokes the callback function specified in step 1, which should > change the page to display_DHM view. > 4. display_DHM retrieves calculation results from session and renders HTML > page. > > Your first problem is with the url template tag. You might try this: > > {% url MolProbity_Compare_test.views.run_DHM %} > > You can also use a named urls, e.g., > ... > url(r'^DHM_run/$', run_DHM, name="run_DHM"), > ... > in which case {% url run_DHM %} should also work > > Or you can just call the url directly instead of using the url template tag, > e.g., '/run_DHM/'. > > The request argument is always passed to your views, you don't have to do it > explicitly. So your run_DHM and display_DHM views will always have that > available. Just get the session out of the request object in each view you > need it. > > Basic skeleton: > > # please_wait.html > ... > <script type="text/javascript" > src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> > <script type="text/javascript"> > $.get('{% url run_DHM %}', function(data) { > if (data == 'OK') { > window.location.href = '{% url display_DHM %}'; > } else { > alert(data); > } > }); > </script> > > Note I've used the shorthand urls above, you could just use '/run_DHM/' and > '/display_DHM/' instead of the url template tags. You could also use the > full package path. Also note that the callback function I refer to is > defined inline - the function(data) ... part. > > # views.py > from django.http import HttpResponse > > def please_wait(request): > return render_to_response('please_wait.html', ...) > > def run_DHM(request): > # Do calculations, store results in request.session > ... > # If everything ok, return OK (otherwise return some error) > return HttpResponse('OK') > > def display_DHM(request): > # Get results from session > return render_to_response('ran_DHM.html', ...) > > This is over simplified, but should serve to get started if you want to use > this redirect approach. > > On Thu, Sep 9, 2010 at 9:59 AM, Bradley Hintze <bradle...@aggiemail.usu.edu> > wrote: >> >> Alec, >> >> Thanks for your patience. The jquery tutorials have been frustrating. >> Anyway, I do not have three 'views' as you suggested. I will try that. >> But I need to understand a few things before I try that. How to call >> run_DHM from my please_wait.html page. (I assume AJAX but I've tried >> and tries what have been suggested with no success, most likely due to >> my failed attempts at understanding AJAX) I assume after I run the >> run_DHM view function I will somehow have run_DHM redirect it to the >> display_DHM. My question is, how do I redirect AND pass the >> request.session arguments, which is where the data from run_DHM will >> be stored? >> >> As requested, here is my full url.py: >> >> from django.conf.urls.defaults import * >> from MolProbity_Compare_test.views import * >> >> # Uncomment the next two lines to enable the admin: >> # from django.contrib import admin >> # admin.autodiscover() >> >> urlpatterns = patterns('', >> (r'^home/$', home_view),#the 'index' or home or top page view >> (r'^about/$', about_view), >> (r'^log_out_confirm/$', log_out_confirm), >> (r'^log_out/$', log_out), >> (r'^upload/$', uploaded_PDBs), >> (r'^rotamer_diff/$', rotamer_dif_frame), >> (r'^side-by-side/$', side_by_side), >> (r'^side-by-side-key/$', side_by_side_key), >> (r'^side-by-side-frame/$', side_by_side_frame), >> (r'^DHM_run/$', run_DHM), >> (r'^please_wait/', please_wait), >> (r'^analyze/$', analyze_compare), >> ) >> >> >> On Thu, Sep 9, 2010 at 9:22 AM, Alec Shaner <asha...@chumpland.org> wrote: >> > Could you post the full url.py file? >> > > > ... > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To post to this group, send email to django-us...@googlegroups.com. > To unsubscribe from this group, send email to > django-users+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > -- Bradley J. Hintze Graduate Student Duke University School of Medicine 801-712-8799 -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-us...@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.