2016-08-05 38 views
0

Wie kann man Seiten mit einem href-Tag in Templates in django richtig routen? meine urls.pydjango ein href-Tag, das nicht richtig routet

urlpatterns = [ 
url(r'^admin/', admin.site.urls), 
url(r'^$', views.home_page, name='home_page'), 
url(r'^post/', include('blog.urls')), 
url(r'^post/(?P<slug>[-\w]+)/$', views.single_post, name='post'), 
url(r'^about/', views.about_page, name='about_page'), 
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 

views.py

def home_page(request): 
posts = Post.objects.filter(publish_date__lte=timezone.now()).order_by('publish_date').reverse() 
paginator = Paginator(posts, 6) 
page = request.GET.get('page') 
try: 
    posts = paginator.page(page) 
except PageNotAnInteger: 
    posts = paginator.page(1) 
except EmptyPage: 
    posts = paginator.page(paginator.num_pages) 

return render_to_response('home.html', locals(), context_instance=RequestContext(request)) 

def single_post(request, slug): 
    post = get_object_or_404(Post, slug=slug) 
    return render_to_response('post/post_detail.html', locals(), context_instance=RequestContext(request)) 

def about_page(request): 
    return render_to_response(
    'about.html' 
) 

base.html

<div class="head-nav"> 
       <span class="menu"> </span> 
        <ul class="cl-effect-1"> 
         <li class="active"><a href="/">Home</a></li> 
         <li><a href="about/">About</a></li> 
         <li><a href="gaming/">Gaming</a></li> 
         <li><a href="tech/">Tech</a></li> 
         <li><a href="404.html">Shortcodes</a></li> 

         <li><a href="contact.html">Contact</a></li> 
            <div class="clearfix"></div> 
        </ul> 
      </div> 

das Problem ist, dass, wenn ich bei url bin http://127.0.0.1:8000/post/post_title und dann will ich gehen über Seite, dann, als ich Link von Navbar traf, geht es zu Verbindung http://127.0.0.1:8000/post/post_title/about gibt mir 404 aber die ungefähr Seite ist an URL http://127.0.0.1:8000/about.

Es ist vielleicht ein Problem mit href oder URLs so korrigieren Sie mich.

Antwort

2

Ersetzen Sie Ihren Code durch die folgende Zeile.

<li><a href="{% url 'about_page' %}">About</a></li> 

Sie haben definiert, URLs in Ihre urls.py genannt, so guten Gebrauch davon machen. Für weitere Informationen lesen Sie diesen Artikel, damit Sie die benannten URLs optimal nutzen können. Django URL's Dispatcher

+0

arbeitete dank ... + Prateek – rohillasarthak

+0

@rohillasarthak: Lesen Sie das Dispatcher Dokument einmal, Sie werden viele neue Funktionen in Django kennen lernen. Immer bereit zu helfen. – Prateek