Hopefully my last question on this,
How do I get back to the page with the form, perhaps with a "Thank
You" message, without having the POST still available if you hit
refresh.
I figured I'd use 'reverse' but not quite sure why it isn't
working ...

Here's where I am now:

#views.py
def record_detail(request, slug):
        record = Record.objects.get(slug=slug)
        if request.method == 'POST':
                form = RatingForm(request.POST)
                if form.is_valid():
                        record_rating = Rating()
                        record_rating.item_id = record.id
                        record_rating.writer_id = request.user.id
                        record_rating.rating = form.cleaned_data['rating']
                        record_rating.save()

                        return render_to_response(reverse('record_detail', 
args=[slug]))
        else:
                form = RatingForm()
        return render_to_response('records/detail.html', {'record_detail':
record, 'form': form}, context_instance=RequestContext(request))

I get the below error.

NoReverseMatch at /records/temp-record-name/
Reverse for 'record_detail' with arguments '(u'temp-record-name',)'
and keyword arguments '{}' not found.


And even if it does get passed back to the original page, how would I
have a "Thank You" message?

Thanks again,


d



On Jul 16, 10:49 am, Russell Keith-Magee <freakboy3...@gmail.com>
wrote:
> On Thu, Jul 16, 2009 at 8:36 AM, The Danny Bos<danny...@gmail.com> wrote:
>
> > Any ideas on this one guys?
>
> > I gave up on it last night.
> > I feel way off ...
>
> Ok - some back tracking.
>
> Your first approach (no forms) should have worked. The reason you
> didn't get any errors is that your code is explicitly ignoring _all
> errors_. You are catching all exceptions, passing, and moving on. That
> means that if an error - ANY minor error - is thrown in your 'form
> processing' code, then it will be silently ignored.
>
> Step 1 - Make it be not silent. Instead of using:
>
> except:
>     pass
>
> try using
>
> except Exception, e:
>     print 'ERROR!!', e
>
> And see what it says. You will probably find that it's something
> really simple, like a typo in a variable name somewhere. Fix those
> issues, and you should find things start to work- the general approach
> you describe should be fine.
>
> Your second attempt, using forms, can be made to work in a number of ways.
>
> 1) Save the values back from the form.
>
> record_rating.rating = form.cleaned_data['rating']
> record_rating.record_id = form.cleaned_data['record']
> record_rating.writer_id = form.cleaned_data['writer']
>
> I would also note that your form probably won't have values for record
> and writer - because they are hidden inputs and you're not providing
> initial values. Look into the `initial` argument to fields, or to the
> form as a whole.
>
> 2) Don't put the values on the form in the first place. After all -
> they're hidden inputs.
>
> class RatingForm(forms.Form):
>        rating = forms.ChoiceField(choices=RATING_CHOICES)
> ...
> record_rating.rating = form.cleaned_data['rating']
> record_rating.record = Record.objects.get(....)
> record_rating.writer = Writer.objects.get(....)
>
> 3) Look at using a ModelForm. This will handle the saving of the
> entire Rating object; however, given that you seem to want to use
> hidden inputs, you will need to jump through some extra hoops to
> override the default widgets. Overriding widgets is covered in the
> docs.
>
> Yours,
> Russ Magee %-)
--~--~---------~--~----~------------~-------~--~----~
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