我在前端开发方面的水平相当低。
尽管如此,我想实现将几个部分锚定在一个页面而不是几个单独页面中的非常广泛的行为,并在URL中引用这些部分。
所以我没有将mysite.com/how_to_walk
和mysite.com/how_to_run
作为两个不同的网页和模板,而是希望有一个页面mysite.com/how_to_do_stuff
,然后根据您是否要#walk
或#run
,请参阅带有id字段的html标题作为网址的后缀。
我真的不知道如何用django做到这一点。我想创建一个url调度程序 - 我猜 - 看起来像这样:
url(r'^how_to_stuff/#(?P<partId>[-\w]*)', views.how_to, name='how_to')
...然后我必须创建一个简单的视图,但是如何在render()调用中引用id,我不知道。
答案 0 :(得分:1)
我找到了自己问题的答案。关键因素是,当客户端(浏览器)访问此类锚定网址mysite.com/how_to_do_stuff#run
时,它会向服务器仅发送根网址mysite.com/how_to_do_stuff
,然后将锚点应用于它在当地。所以你需要:
mysite.com/how_to_do_stuff
。结果如下:
在urls.py中:
...
url(r'^how_to_do_stuff/(?P<part_id>[-\w]+)', views.how_to_redirect, name='how_to'),
url(r'^how_to_do_stuff', views.how_to)
在views.py中:
def how_to_redirect(request, part_id):
return HttpResponseRedirect("/how_to_do_stuff/#"+part_id)
def how_to(request):
return render(request, "GWSite/how_to_do_stuff.html")
然后我在模板中通过以下方式引用这些:
{% url "how_to" "run"}
答案 1 :(得分:0)
看看他们如何将num var发送到views.py
# URLconf
from django.conf.urls import url
urlpatterns = [
url(r'^blog/$', 'blog.views.page'),
url(r'^blog/page(?P<num>[0-9]+)/$', 'blog.views.page'),
]
# View (in blog/views.py)
def page(request, num="1"):
# Output the appropriate page of blog entries, according to num.
...