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?如果有更优雅的方式来改变布尔值?

4

2 回答 2

0

如果您想要优雅,您可以将changeseen视图称为 AJAXGET请求。

于 2012-04-15T18:32:00.363 回答
0

虽然您可以使用 HTTP 引荐来源网址(在 HTTP 引荐来源网址字段中,可通过 访问req.META['HTTP_REFERER']),但不能保证这将被设置甚至有效。我建议您在 URL 中将有关当前页面的一些信息传递给 changeeen:

{% 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,甚至是异地),那么您应该将它们重定向到默认位置,例如主要电影页。

于 2012-04-15T18:32:43.547 回答