我创建了一个带有URL结构的Django应用程序:
eventdetails/?event_id=94099
这会将我带到活动详情应用的索引页面。但是我的应用程序有部分,每个部分都需要使用event_id。
因此我需要一个url结构,如:
eventdetails/who/?event_id=94099
所以我仍然可以访问事件ID。
有人可以告诉我如何创建导航链接或更好的方法。
谢谢,
答案 0 :(得分:2)
django的URL映射不考虑查询字符串,该字符串按原样传递给任何映射的视图。
实际上,这意味着如果你有:
url(r'^eventdetails/who/$', 'event_who', name='e-who'),
url(r'^eventdetails/$', 'event_detail', name='e-detail')
然后,您的两个视图方法都可以访问查询字符串:
def event_detail(request):
id = request.GET.get('event_id')
def event_who(request):
id = request.GET.get('event_id')
if not id:
print 'No ID!'
else:
print 'do stuff'
return render(request, 'who.html')
您还可以将事件ID添加为网址本身的一部分,例如eventdetails/94099/
:
url(r'^eventdetails/(?P<id>\d+)/$', 'event_detail', name='e-detail')
然后您的观点将是:
def event_detail(request, id=None):
if not id:
print 'No ID!'
else:
print 'do stuff'
return render(request, 'detail.html')
您获得的另一个好处是,您可以在模板和视图中轻松生成事件的URL:
<ul>
{% for event in events %}
<li><a href="{% url 'e-detail' id=event.pk %}"> {{ event.name }}</a></li>
{% endfor %}
</ul>
在您看来:
def go_to_event(request, id):
return redirect('e-detail', id=id)