1

我对 Django 很陌生,而且对一般的网络编程不是很熟悉,所以很可能有一个简单的方法可以解决我不知道的问题。

我的网络应用程序是一个照片库。人们可以单击照片以查看放大版本,其中任一侧的按钮用于显示较旧或较新的照片。此外,图库中的照片可以按标签排序,标签作为 URL 参数传递。

我的问题是,当我单击其中一个提交按钮时,Django 将我的 URL 中的参数替换为按钮的名称,从而破坏了我对所使用标签的引用。例如,“127.0.0.1:8000/gallery/view/6/?tag=people”在单击下一步时,在尝试时转换为“127.0.0.1:8000/gallery/view/6/?older=Older”处理网址。

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

1 回答 1

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(因为它不会被使用),olderandnewer参数仍将被发送。

于 2012-12-01T05:02:46.157 回答