我对Django很新,并且对网络编程一般都不太熟悉,所以很可能我的问题很容易解决,我只是不知道。
我的网络应用是一个照片库。人们可以点击照片查看放大版本,左侧有按钮,可用于较旧或较新的照片。此外,图库中的照片可以按标签排序,标签也作为URL参数传递。
我的问题是,当我点击其中一个提交按钮时,Django会将我的URL中的参数替换为按钮的名称,从而破坏了我对我正在使用的标记的引用。例如,点击下一步“127.0.0.1:8000/gallery/view/6/?tag=people”,当它尝试时转换为“127.0.0.1:8000/gallery/view/6/?older=Older”处理URL。
我的HTML代码:
<form action="/gallery/view/{{ photo.id }}/?tag={{ tag }}" method="get">
{% if has_newer %}
<input type="submit" name="newer" value="Newer">
{% endif %}
<img src="{{ photo.photofile.url }}">
{% if has_older %}
<input type="submit" name="older" value="Older">
{% endif %}
</form>
在我的view.py中,我传递了标记以及render_to_response中的其他信息,但我不知道如何在处理按钮时回收它。
render_to_response('item/view.html', {'photo':photo, 'tag':tag, 'related_tags': related_tags, 'related_photos': related_photos, 'has_newer': has_newer, 'has_older': has_older}, context_instance=RequestContext(request))
这是用于处理按钮的view.py代码:
if 'newer' in request.GET:
if has_newer:
return HttpResponseRedirect('/gallery/view/%s/?tag=%s'%(newer[1].id, tag))
else:
return HttpResponseRedirect('/gallery/')
if 'older' in request.GET:
if has_older:
return HttpResponseRedirect('/gallery/view/%s/?tag=%s'%(older[1].id, tag))
else:
return HttpResponseRedirect('/gallery/')
答案 0 :(得分:1)
<form action="/gallery/view/{{ photo.id }}/" method="get">
{% if has_newer %}
<input type="submit" name="newer" value="Newer">
{% endif %}
<!--This will append a tag parameter with given value to the querystring -->
<input type="hidden" name="tag" value="{{ tag }}">
<img src="{{ photo.photofile.url }}">
{% if has_older %}
<input type="submit" name="older" value="Older">
{% endif %}
</form>
请注意,查询字符串已从action
中删除(因为它不会被使用),older
和newer
参数仍然会被发送。