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.