After your comments, I have used ModelForm to simplify my code. I have also achieved redirecting the desired url by using the redirect() function. My issues are still basically the same however:
- I do not know how to tell Django to render a template at the redirected url.
I've tried passing redirect differnt views and params etc. to no avail.
Here is my new views.py: http://dpaste.org/EtxdP/
I am trying to have the event_page view handle the redirect and render the template it returns. I know I am not relating the redirect and the view at all, this is because I do not know how. If I try to relate them in some way like this: return redirect('event_page', event)
I get the error: Reverse for 'event_page' with arguments '(<Event: pppzzz>,)' and keyword arguments '{}' not found.
My urls.py looks like this now: http://dpaste.org/UzBcR/
I am sort of hazy on the use of the third parameter in my second url pattern. I know the first param is a regex, the second is the view that handles the url, and from what I understand by reading the docs, the third param is a type of distinguisher used if you are calling the same view for different urls.
Any thoughts on where I would begin to for rendering a template at the redirected url?
Thanks,
Matt
On Wednesday, July 25, 2012 6:29:42 AM UTC-4, Daniel Roseman wrote:
On Wednesday, July 25, 2012 6:29:42 AM UTC-4, Daniel Roseman wrote:
On Wednesday, 25 July 2012 02:42:45 UTC+1, Matthew Meyer wrote:Hello all,I'm trying to load the url of a model created with get_absolute_url() programmatically in my view. There are basically three steps I need to accomplish this:1. make sure @permalink is working correctly. This step I am fairly confident I have completed. Here is the model I use: http://dpaste.org/nH0cZ/2. make sure I am rendering the url correctly in my view: http://dpaste.org/FOGjs/ This view is fairly involved. The return statement on line 12 is where I am trying to load the url. In a nutshell, if the request is GET this view renders a form for the user which they can use to fill some fields in a model. one of the fields they fill ("name") I want to use as my the rendered url, which is why I am trying to pass {'event': Event} on line 12 when request.method == 'POST' and the user has submitted the form. Right now when the user submits the post, the event_page.hml loads but without the event object url.3. make sure my urlconfs are working:: http://dpaste.org/LPdfK/ Not positive here, but I know this is fairly simple to most. I just tried to follow what the docs had for get_absolute_url and @permalink (https://docs.djangoproject.com/en/dev/ref/models/ ) Something is wrong though because the "view on website" button in admin is leading to a permalinked url that doesn't match.instances/?from=olddocs# django.db.models.permalink As you can see, I am quite a bit lost and could really use some guidance. Any help is appreciated. Thanks!Your problem is in step 2. `Event` is the model class itself, but you want to render the URL for a particular instance of that class. Presumably you want the event that has been created by the form. I don't understand why you are using a formset though: that implies you are creating multiple events, whereas you talk about showing the URL for a single event, which makes more sense. Sounds like you should use a simple ModelForm, and if it's valid do `event = form.save()` - now you can pass that `event` object to the template.Finally, note that rendering a template directly after a POST is a bad idea, as the documentation explains. You should always redirect to a new page: you could redirect directly to the new event's URL if you like.--DR.
You received this message because you are subscribed to the Google Groups "Django users" group.
To view this discussion on the web visit https://groups.google.com/d/msg/django-users/-/Ke1q_x6ak6wJ.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment