Представление Django не выводится правильно - PullRequest
0 голосов
/ 22 октября 2019

У меня есть представление, которое должно выводиться, если домен в базе данных находится в сети или в автономном режиме.

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 ]

1 голос
/ 22 октября 2019

Разве вы не получили значения ваших переменных задом наперед? Вы устанавливаете host_online на True, за исключением пинг-вызова, что не имеет смысла для меня

1 голос
/ 22 октября 2019

Я верю, что вы пытаетесь достичь следующего:

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 а не наоборот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...