2012-04-15 57 views
0

我使用圖像來表示布爾型字段的狀態(如openeye.png,closeeye.png)。如果我點擊圖片,狀態正在改變,頁面必須刷新另一張圖片。有一些使用它的觀點。有一個代碼:通過點擊鏈接改變布爾型字段

模板 - 這可能是moviegrid.html,movielist.html等

{% if movi.seen %} {# movi.seen is a boolean field #} 
    <div id="seen"> 
     <a href="{% url views.changeseen movi.tmdb_id %}"> 
      <img src="{{ STATIC_URL }}seen.gif"> 
     </a> 
    </div> 
{% else %} 
    <div id="seen"> 
     <a href="{% url views.changeseen movi.tmdb_id %}"> 
      <img src="{{ STATIC_URL }}not_seen.gif" > 
     </a> 
    </div> 
{% endif %} 

views.changeseen

def changeseen(request, id): 
    mov=Movi.objects.get(tmdb_id=id) 
    mov.seen=not mov.seen 
    mov.save() 
    return redirect('??????') 

問題:我如何返回從changeseen的父頁面?如果有更優雅的方式來改變布爾值?

回答

0

如果你想要優雅,你可以打電話changeseen視圖認爲AJAX GET請求。

0

雖然你可能使用HTTP引用者(在HTTP引用者字段中,可通過req.META['HTTP_REFERER']訪問),但不能保證這將被設置,甚至無效。我建議您傳遞有關當前頁面changeseen的一些信息,在URL:

{% if movi.seen %} {# movi.seen is a boolean field #} 
<div id="seen"> 
    <a href="{% url views.changeseen movi.tmdb_id %}?return_to={{ request.get_full_path }}"> 
    <img src="{{ STATIC_URL }}seen.gif"> 
    </a> 
</div> 
{% else %} 
<div id="seen"> 
    <a href="{% url views.changeseen movi.tmdb_id %}?return_to={{ request.get_full_path }}"> 
    <img src="{{ STATIC_URL }}not_seen.gif" > 
    </a> 
</div> 
{% endif %} 

您應該驗證的return_to之前您實際上將用戶重定向到它,如果它似乎沒有什麼意義(如重定向到註銷URL,或者甚至是異地),那麼您應該將它們重定向到默認位置,如主電影頁面。