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.

Reply via email to