Django视图无法正确输出

时间:2019-10-22 15:24:58

标签: django django-views

我有一个视图,该视图应该在数据库域处于联机还是脱机状态时输出。

def pingDomain(request, page):
    page_object = get_object_or_404(Table, page=page)
    try:
        subprocess.check_call(['ping', '-c', '1',  page_object.page])
    except subprocess.CalledProcessError:
        host_online = True
    else:
        host_online = False
    context = {
        'online': host_online,
    }
    return render(request, 'home.html', context)

在html模板上

<th class="center-align red-text text-darken-4" scope="row">
    {% if online %}
      <i class="small material-icons green-text">check_circle</i>
    {% else %}
      <i class="small material-icons red-text">close</i>
    {% endif %}
</th>

问题是,在html模板上,它表明域处于脱机状态,但实际上处于联机状态。

我在哪里弄错了?有人熟悉吗?

2 个答案:

答案 0 :(得分:1)

我相信您要实现的目标如下:

def pingDomain(request, page):
    page_object = get_object_or_404(Table, page=page)
    try:
        subprocess.check_output(['ping', '-c', '1',  page_object.page])
        host_online = True
    except subprocess.CalledProcessError:
        host_online = False

    context = {
        'online': host_online,
    }
    return render(request, 'home.html', context)

原因是我更改了您的逻辑,因为如果subprocess出现错误,您想设置host_online = False而不是相反

答案 1 :(得分:1)

您不是简单地向后获取变量值吗?您将True设置为post,但无法执行ping呼叫