Re: render a models slug field as a url

2012-07-26 Thread Matthew Meyer
That was it, it is working now. Thank you so much Daniel! :)

On Thursday, July 26, 2012 4:25:10 AM UTC-4, Daniel Roseman wrote:
>
> On Thursday, 26 July 2012 03:45:41 UTC+1, Matthew Meyer wrote:
>>
>> HI daniel, thanks for the reply
>>
>> 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 '(> 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
>>
>>
> You haven't quite understood what a redirect is. A redirect doesn't render 
> a template: a redirect is just a signal to the browser to go and fetch 
> another, completely different, URL. Naturally, Django will then reply to 
> that second request with the template rendered by the view pointed to by 
> that second URL.
>
> The third parameter to the url pattern is basically a name Django can use 
> to refer to that URL, so that it can 'reverse' it and produce the actual 
> URL for use in things like links, redirects and permalink definitions.
>
> So, the main problem now is that you probably want the absolute URL to be 
> the `event_page` view. You need to update the get_absolute_url method to 
> point to that URL - as I said above, you can use the short name 'event_url' 
> rather than the fully qualified view name. However, you also need to update 
> the event_page view to accept the `name` parameter, and then to actually 
> get the relevant Event object from that name - eg `event = 
> Event.objects.get(name=name)` - and pass it to the event_page.html template.
> --
> 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/-/VVxnOTEWDe8J.
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.



Re: render a models slug field as a url

2012-07-26 Thread Daniel Roseman
On Thursday, 26 July 2012 03:45:41 UTC+1, Matthew Meyer wrote:
>
> HI daniel, thanks for the reply
>
> 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 '( 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
>
>
You haven't quite understood what a redirect is. A redirect doesn't render 
a template: a redirect is just a signal to the browser to go and fetch 
another, completely different, URL. Naturally, Django will then reply to 
that second request with the template rendered by the view pointed to by 
that second URL.

The third parameter to the url pattern is basically a name Django can use 
to refer to that URL, so that it can 'reverse' it and produce the actual 
URL for use in things like links, redirects and permalink definitions.

So, the main problem now is that you probably want the absolute URL to be 
the `event_page` view. You need to update the get_absolute_url method to 
point to that URL - as I said above, you can use the short name 'event_url' 
rather than the fully qualified view name. However, you also need to update 
the event_page view to accept the `name` parameter, and then to actually 
get the relevant Event object from that name - eg `event = 
Event.objects.get(name=name)` - and pass it to the event_page.html template.
--
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/-/ZNOiBggB8oAJ.
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.



Re: render a models slug field as a url

2012-07-25 Thread Matthew Meyer
HI daniel, thanks for the reply

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 '(,)' 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, 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/instances/?from=olddocs#django.db.models.permalink)
>>  
>> Something is wrong though because the "view on website" button in admin is 
>> leading to a permalinked url that doesn't match.
>>
>> 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+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.



Re: render a models slug field as a url

2012-07-25 Thread Daniel Roseman


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/instances/?from=olddocs#django.db.models.permalink)
>  
> Something is wrong though because the "view on website" button in admin is 
> leading to a permalinked url that doesn't match.
>
> 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/-/z3oM38TtTCMJ.
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.



render a models slug field as a url

2012-07-24 Thread Matthew Meyer
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/instances/?from=olddocs#django.db.models.permalink)
 
Something is wrong though because the "view on website" button in admin is 
leading to a permalinked url that doesn't match.

As you can see, I am quite a bit lost and could really use some guidance. 
Any help is appreciated. Thanks!

-- 
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/-/w8b_P_KhLPYJ.
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.