我使用图像来表示布尔字段的状态(如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 :(得分:0)
如果您想要优雅,可以将changeseen
视图称为AJAX GET
请求。
答案 1 :(得分:0)
虽然可以使用HTTP引荐来源(在HTTP Referer字段中,可通过req.META['HTTP_REFERER']
访问),但无法保证这将被设置甚至有效。我建议您在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,甚至是异地),那么你应该只是将它们重定向到默认位置,比如主要电影页面。