OK, Got it working. Sorry one more question. I have a couple of places where I'd like to display the 'Please Wait' page. I'd imagine I'd do something similar to the following::
# 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"> if (If_come_from_pageA) { $.get('{% url run_DHM %}', function(data) { if (data == 'OK') { window.location.href = '{% url display_DHM %}'; } else { alert(data); } } else if (If_come_from_pageB) { $.get('{% url run_analysis %}', function(data) { if (data == 'OK') { window.location.href = '{% url display_analysis %}'; } else { alert(data); } } }); </script> an of course configure url.py and view.py as explained previously. Is there an easy way to do this? In other words, what are the If_come_from_pageA and If_come_from_pageB conditions? Can I access the context dictionary that I passed to please_wait.html? On Thu, Sep 9, 2010 at 11:23 AM, Bradley Hintze <[email protected]> wrote: > Yeah, I just tried out what I wrote in my last and it worked! > > Thanks for all your help!!! > > Bradley > > On Thu, Sep 9, 2010 at 11:17 AM, Alec Shaner <[email protected]> wrote: >> That's really a design issue up to you, i.e., how you get data from your >> view to your template. Since I don't know the format or how much data you're >> storing in the session it's hard to say. I was just assuming you'd use >> context variable(s) to pass the data to the template. I'm not intimately >> familiar with the Session API, but isn't it just a dictionary? >> >> On Thu, Sep 9, 2010 at 11:05 AM, Bradley Hintze >> <[email protected]> wrote: >>> >>> 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 <[email protected]> >>> 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 >>> > <[email protected]> >>> > 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 <[email protected]> >>> >> 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 [email protected]. >>> > To unsubscribe from this group, send email to >>> > [email protected]. >>> > 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 [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/django-users?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> 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 > -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

