This situation is greatly helped if the same view displays the form as
well as processes it.  So it could look something like this:

def write_entry(request):
    form = EntryForm()
    if request.POST:
        form = EntryForm(request.POST)
        if form.is_valid():
            ... save entry, redirect to new page...

    return render_to_response('entry/write.html', {'form':form})

In this way, if they just type it in as a GET, they'll go to the form
page.  If they're submitting the form, then it will be validated and
either return to the page with errors, or save the new entry and
redirect to the new page.

This paradigm isn't valid in all cases, but when it works, it works
well.


On Mar 30, 6:39 am, "Cam McVey" <[EMAIL PROTECTED]> wrote:
> On 3/30/07, Arvin Schnell <[EMAIL PROTECTED]> wrote:
>
>
>
> > On Fri, Mar 30, 2007 at 03:01:44AM -0700, Helge wrote:
>
> *SNIP*
> > > I wonder if there is a standard way in Django to prevent URLs from
> > > being called directly.
>
> > You can use the require_POST decorator to ensure that the view
> > has some POST data.
>
> > IIRC it responses with a 405 error if the POST data is missing
> > but that's not displayed as an error message to the user.  Maybe
> > this can be enhanced.
>
> > Arvin
>
> Another idea would be to redirect to the form page. So, process the
> data if it exists, or redirect the request to the 'proper' from page.
>
> Regards,
> Cam


--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to