Thanks for all your help!!!
Bradley
On Thu, Sep 9, 2010 at 11:17 AM, Alec Shaner <ashaner@chumpland.org> 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
> <bradley.h@aggiemail.usu.edu> 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 <ashaner@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
>> > <bradley.h@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 <ashaner@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-users@googlegroups.com.
>> > To unsubscribe from this group, send email to
>> > django-users+unsubscribe@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-users@googlegroups.com.
>> To unsubscribe from this group, send email to
>> django-users+unsubscribe@googlegroups.com.
>> 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 django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscribe@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-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment