django href 标签没有正确路由
django a href tag not routing properly
如何使用 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
然后我想转到关于页面,然后当我从导航栏点击 link 时,它转到 http://127.0.0.1:8000/post/post_title/about
,这给了我一个 404,但关于页面位于 url http://127.0.0.1:8000/about
.
可能是 href 或 urls 的问题,请指正。
将您的代码替换为以下行。
<li><a href="{% url 'about_page' %}">About</a></li>
您已经在 urls.py 中定义了名为 url 的内容,因此请充分利用它。
有关详细信息,请阅读本文,这将帮助您充分利用命名 urls。 Django URL's Dispatcher
如何使用 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
然后我想转到关于页面,然后当我从导航栏点击 link 时,它转到 http://127.0.0.1:8000/post/post_title/about
,这给了我一个 404,但关于页面位于 url http://127.0.0.1:8000/about
.
可能是 href 或 urls 的问题,请指正。
将您的代码替换为以下行。
<li><a href="{% url 'about_page' %}">About</a></li>
您已经在 urls.py 中定义了名为 url 的内容,因此请充分利用它。 有关详细信息,请阅读本文,这将帮助您充分利用命名 urls。 Django URL's Dispatcher