Hey Gregory,

On Thu, Aug 2, 2012 at 9:06 AM, Gregory Thompson Jr. <
spockthompso...@gmail.com> wrote:

> I'd like to pass form data from one view to another.
>
> Here's my attempt:
>
> *#Models.py*
> from django import forms
> class Textizer(forms.Form):
>     to_textize = forms.CharField(max_length=100)
>
>     def __unicode__(self):
>         return self.to_textize
> *#views.py*
> from textize.models import Textizer
> from django.http import HttpResponseRedirect
> from django.shortcuts import render_to_response
> from django.core.context_processors import csrf
> def index(request):
>     if request.method == 'POST':
>         form = Textizer(request.POST)
>
>         if form.is_valid():
>             request.session['text'] = form.cleaned_data['to_textize']
>             return HttpResponseRedirect('/results')
>
>     else:
>         form = Textizer()
>
>     c = {'form': form}
>     c.update(csrf(request))
>     return render_to_response('C:/Documents and 
> Settings/quansai/projects/textsite/templates/index.html', c)
>     def results(request):
>     text = request.session.get('text', None)
>     c = {'text' : text}
>     return render_to_response('C:/Documents and 
> Settings/quansai/projects/textsite/templates/results.html', c)
>
>
> I really don't understand the following, and I've read the documentation over 
> and over.  I've been on this for two days:
>
>
No problem! I'll try to clear things up for you.


>
>    - How to initiate a session
>
> Sessions are initiated automatically in Django using the "Session
Middleware". Basically, on each request, a session is either started or
continued (in simple terms, there's probably more to it than that but I
haven't inspected Django's session code too deeply)

The only thing you need to do to make sure the session middleware is
properly configure it. It needs some sort of a storage (such as database,
file, cookies which are limited, etc...). You'll also need to make sure the
session middleware is included in your middleware configuration. This
configuration would exist under your settings.py and I believe is enabled
by default when creating new projects; at least that's been my experience
with Django 1.3+.

Keep in mind that these do use cookies, no matter what, so you will need
them enabled in whatever HTTP Client (browser, or what-not) you use.

Two links for enabling and configuring sessions (both on the same page,
these are anchor links).

Enabling Sessions:
https://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#enabling-sessions
Configuring Sessions:
https://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#configuring-the-session-engine


>    - How sessions are checked
>
> I'm not quite sure what you mean, here. Sessions are checked to be valid
by Django by signing them, but this is done by the middleware. If you want
to check whether a session exists, you might be asking more along the lines
of checking to see whether a user is authenticated. Or, you may be asking
how to check whether a certain variable is available from the session.
Since I'm not sure which part your looking for information on, I'll give
you information on both:

To check if a particular object exists within the current session, follow
the example under __contains__(key) which actually does not call "contains"
but instead uses "if x in request.session":
https://docs.djangoproject.com/en/dev/topics/http/sessions/?from=olddocs/#using-sessions-in-views

To check whether a current user is authenticated (logged in), you could use
this example:
https://docs.djangoproject.com/en/dev/topics/auth/#authentication-in-web-requests


>
>    - How to retrieve form data from one page to handle the data on another.
>
>
Retrieving Form Data is actually one of Django's extremely strong points
(in my opinion) although it does require a bit of a learning curve. Once
you get it down, it takes off a huge burden; especially when coming from
other frameworks that don't offer as much validation built in. Basically,
you subclass a Form, create an instance of your form in the view while
passing it the POST data, and it will validate that data. Then, you can
simply do some flow-control based upon "if form.is_valid()".

Handling the data on another view is sort of a vague question. I'm not
quite sure what you mean by this one but please feel free to elaborate and
I'll see if I can give you some more info here.


> Again, I've read through the documentation.  I've asked on IRC but everyone 
> pretty much just says "RTFM" even when I tell them I have.  This is 
> absolutely frustrating as an extreme beginner.
>
>
Weird. Most people just suggest reading the Tutorial. Have you given that a
shot? It really does help with diving into the functionality and doesn't
take too long considering the large amount of knowledge you gain about
Django from it.


>
> I'd also like to add that I DO understand the core Python language.  Please, 
> unless it's absolutely necessary, don't try explaining to me what a 
> dictionary, tuple, list, etc... is.  I've already had my intelligence 
> insulted by the users on IRC in this regard.  I really just don't understand 
> the sessions documentation.
>
>  --
>

Sorry to hear about your frustration. I recommend trying out the tutorial
if you haven't given it a shot, yet, and maybe break your questions up into
smaller peices when you ask them on here. Including your shot at the code
was a good show of attempt. I'm not sure what exact problems you're having
with your code but it may be helpful to yourself to break it down to the
smallest body of functionality that will emulate what you're attempting to
see where it's going wrong. Taking out the Form and testing sessions with
two views might be a good way to start.

Good luck!

-- 
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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to