Hi Malcolm,
thanks for the fast reply.

What is the downside of sticking this kind of information into a
session, just that the session backend needs to carry this amount of
information around and cookies have to be enabled for it to work? I
otherwise would prefer it over (2) just for the cleaner URL.

Thanks
Stefan




On Nov 16, 1:16 pm, Malcolm Tredinnick <[EMAIL PROTECTED]>
wrote:
> On Sun, 2008-11-16 at 12:58 +0100, Stefan Wallner wrote:
>
> p,,,[
>
> > My basic idea would be to use the same URL and view/template for  
> > getting the directory listing and posting a file for uploading to it.  
> > If a file is uploaded successfully the renamed file name and the users  
> > that received the email should be listed in a notification part of the  
> > template (i.e. <div class="notice">...) which confirms to the user  
> > that everything is ok.
>
> > Now I am stuck on how to best do this. POST/REDIRECT/GET does not seem  
> > to fit here, since HttpResponseRedirect cannot pass any parameters to  
> > a template and redirecting to the same URL does not make sense anyway.  
> > What other pattern could/should I use?
>
> I suspect you're actually asking the wrong question. The question isn't
> "where should I redirect to?", but rather "how can I tell when loading
> the file listing page, after a GET request, that some extra information
> about the renamed file and notified people should be displayed?". It
> doesn't matter what URL you actually retrieve after the file is
> uploaded, that question still remains -- how to tell that you need to
> display that information.
>
> Once you've solved that problem, redirecting the the normal file listing
> page is quite a natural place to go, since it shows the file listing
> (plus this extra information sometimes), but that's really a side-issue.
>
> You have at least a couple of choices:
>
> (1) Use sessions and store the fact that a file was just uploaded (and
> renamed) and the list of people notified in a key in the session. When
> the user accesses the directory listing page using GET and if they have
> that session key, display the extra information and then remove it from
> the session (so it's displayed only once). Or possibly you want to keep
> it in the session for a period of time or something. In any case, you
> can use the session.
>
> (2) The more HTTP/REST-like approach is to come up with a unique
> identifier for the page that displays the newly uploaded information.
> This identifier tells you (the webserver side of the code) that you need
> to display the new filename and list of notified people. One way to do
> this is to add a parameter to the GET request that is, say, the primary
> key (or some other token) of the newly uploaded file. Then, when you are
> processing that page, if the querystring contains that parameter, you
> retrieve the new filename and the list of people who would have been
> notified from the database.
>
> The second way uses the fact that you can attach a querystring to a URL
> and that's quite valid for an HTTP redirect. It's also probably not that
> hard to implement, providing you can easily determine from the id of the
> file who the recipients were. The slight drawback is that anybody who
> knows that URL can view the same information. Maybe that's not a
> problem. If it is, you can use access checking (e.g. the special display
> information is only presented if the currently logged in user is the
> person who uploaded the file with that id).
>
> Thus the 'normal' view is, say, /foo/file_listing/ and the target after
> an upload is, say, /foo/file_listing/?upload=123.
>
> The first of these two choices is pretty fast to implement, but puts
> information in the session, which you may or may not like doing. The
> second is more "natural" in a way, but you have to do some work to
> process the incoming optional querystring. It's still not particularly
> hard, though.
>
> Regards,
> Malcolm
--~--~---------~--~----~------------~-------~--~----~
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