Using urls with names will solve your problem.

Basically if you change your urls.py like this:

    url(
        r'^category/listing_view/(?P<id>\w+)/$',
       'mysite.library.views.listing_view',
       name = 'name_for_this_view'
    ),

What I have done is to add a name to the url for convenience I also
used the url() function. This name can now be used instead of the link
to your view. So if you were to change the site structure, when
changes would be made to your urlconf, django would then be able to
figure things out for you. In this version your new link would look
like this:

<li><a href="
           {% url name_for_this_view n.id %}
        ">{{n.list_channel}}</a></li>


In the docs you can read about it at
url(): http://docs.djangoproject.com/en/dev/topics/http/urls/#url
naming: http://docs.djangoproject.com/en/dev/topics/http/urls/#id2

Good luck.
-Briel

On 8 Jan., 12:41, Praveen <praveen.python.pl...@gmail.com> wrote:
> Hi Malcolm i am very new bie of Django. i read through
> get_absolute_url but do not know how to use.
> What you have given the answer i tried with that and its working fine
> but my senior asked me what will happen if i change the site name then
> every where you will have to change url
> mysite.library.views.listing_view.
>
> so they told me to use get_absolute_url
>
> i wrote get_absolute_ul in models.py
>     def get_absolute_url(self):
>         return "/listing/%i/" % self.id
> and i am trying to use in my html page template but i don't know how
> to use
>
> <li> <a href="{{get_absolute_url}}{{n.id}}">{{n.list_channel}}</a></
> li>
>
> then again same problem. first time when some one click on link it
> works fine but second time it appends the link 
> likehttp://127.0.0.1:8000/category/listing_view/3/3
>
> Please give me some idea
>
> On Jan 8, 3:37 pm, Praveen <praveen.python.pl...@gmail.com> wrote:
>
> > Thank you so much Malcolm.
> > every one gives only the link and tell to read but your style of
> > solving the problem is amazing. how you explained me in a nice way
> > that i can never ever find in djangoproject.com.
> > Thanks you so much malcom
>
> > On Jan 8, 3:23 pm, Malcolm Tredinnick <malc...@pointy-stick.com>
> > wrote:
>
> > > I'm going to trim your code to what looks like the relevant portion of
> > > the HTML template, since that's where the easiest solution lies.
>
> > > On Thu, 2009-01-08 at 02:02 -0800, Praveen wrote:
>
> > > [...]
>
> > > >     list_listing.html
>
> > > > <div id="leftpart">
> > > > <h3>Sight Seeings</h3>
> > > > <ul>
> > > > {%if listing_result %}
> > > >     {% for n in listing_result %}
> > > >         <li><a href="{{n.id}}">{{n.list_channel}}</a></li>
> > > >     {% endfor %}
> > > > {% else %}
> > > >     <p>not available</p>
> > > > {% endif %}
> > > > </ul>
> > > > </div>
>
> > > [...]
>
> > > > I am displaying Listing_channels and Listing on same page. if some one
> > > > click on any Listing_channels the corresponding Listing must display
> > > > on same page. that is why i am also sending the Listing_channels
> > > > object to list_listing.html page. if some one click first time on
> > > > Listing_channels it shows the 
> > > > urlhttp://127.0.0.1:8000/category/listing_view/1/
> > > > but second time it appends 1 at the end and the url becomes
> > > >http://127.0.0.1:8000/category/listing_view/1/1
>
> > > The above code fragment is putting an element in the template that looks
> > > like
>
> > >         <a href="1">...</a>
>
> > > That is a relative URL reference and will be relative to the URL of the
> > > current page (which is .../category/listing_view/1/). In other words, it
> > > will be appended to that URL. One solution is to change the relative
> > > reference to look like
>
> > >         <a href="../1">...</a>
>
> > > or, in template language:
>
> > >         <li><a href="../{{n.id}}">{{n.list_channel}}</a></li>
>
> > > That assumes you will only be displaying this template
> > > as ..../listing_view/1/ (or with a different number as the final
> > > component), since it will *always* remove the final component and
> > > replace it with the id value.
>
> > > The alternative, which is a little less fragile, is to use the "url"
> > > template tag to include a URL that goes all the way back to the hostname
> > > portion. You could write
>
> > >         <li><a href="
> > >            {% url mysite.library.views.listing_view n.id %}
> > >         ">{{n.list_channel}}</a></li>
>
> > > (I've put in some line breaks just to avoid unpleasant line-wrapping).
> > > The {% url ... %} portion will return "/category/listing_view/1/" -- or
> > > whatever the right n.id value is -- which will always be correct.
>
> > > Have a read 
> > > ofhttp://docs.djangoproject.com/en/dev/ref/templates/builtins/#urlif
> > > you're not familiar with the URL tag.
>
> > > 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 
django-users+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to