2012-04-15 8 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? И если есть более элегантный способ изменить значение bool?

ответ

0

Если вы хотите быть элегантным, вы можете позвонить по номеру changeseen, чтобы рассмотреть идею AJAX GET.

0

В то время как вы можете использовать HTTP-реферер (в поле HTTP Referer, доступном через 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 выхода или даже вне сайта), вы должны просто перенаправить их в местоположение по умолчанию, например главную страницу фильма.

Смежные вопросы