Django URL正在通过提交按钮进行更改

时间:2012-12-01 04:55:34

标签: django url button parameters

我对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/')

1 个答案:

答案 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中删除(因为它不会被使用),oldernewer参数仍然会被发送。