2012-12-01 18 views
1

我對Django非常陌生,並且對一般的Web編程不太熟悉,所以很可能對我的問題有一個簡單的解決方法,但我並不知道。Django URL正在通過提交按鈕進行更改

我的網絡應用程序是一個照片庫。人們可以點擊照片查看放大的版本,在任何一邊都可以看到較舊或較新的照片。另外,圖庫中的照片可以通過標籤排序,這些標籤作爲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
<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參數仍將一起發送。

+0

這看起來就像是沒有的伎倆!我完全忘了隱藏的類型,謝謝一堆! (我會盡快接受時間限制,必須要快速回復:)) –