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 -~----------~----~----~----~------~----~------~--~---