【问题标题】:django a href tag not routing properlydjango a href 标记未正确路由
【发布时间】:2016-12-11 10:43:10
【问题描述】:

如何在 django 的模板中使用 href 标签正确路由页面? 我的 urls.py

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>

问题是当我在 url http://127.0.0.1:8000/post/post_title 然后我想转到关于页面,然后当我从导航栏点击链接时,它转到http://127.0.0.1:8000/post/post_title/about,这给了我一个 404,但关于页面位于 url http://127.0.0.1:8000/about

href 或 url 可能有问题,请纠正我。

【问题讨论】:

    标签: python html django web url-routing


    【解决方案1】:

    用下面的代码替换你的代码。

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

    你已经在你的 urls.py 中定义了命名的 url,所以好好利用它。 有关更多信息,请阅读本文,这将帮助您充分利用命名 url。 Django URL's Dispatcher

    【讨论】:

    • @rohillasarthak:阅读 url 的调度程序文档一次,您将了解 Django 中可用的许多新功能。随时准备提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多