'<' '<' не поддерживается между экземплярами 'NoneType' и 'int' django views.py

шаблоны/html

            {% if guess == rand_num %}
            <h1>{{message1}}</h1>
            {% elif guess > rand_num %}
            <h1>{{message3_a}}</h1>
            <h1>{{message3_b}}</h1>
            {% elif guess < rand_num %}
            <h1>{{message2_a}}</h1>
            <h1>{{message2_b}}</h1>
            {% endif %}

views.py

определение просто(запрос, ): rand_num = случайный выбор(lst) печать(rand_num) попыток = 11 для _ в диапазоне(0, 10): # print(если "У вас осталось {попыток} угадать число") # guess = int(ввод("Сделайте предположение: ")) guess = запрос.GET.get('угаданный номер') , если guess == случайный номер.: возвращает render(запрос, 'easy.html', {'попытки': попытки, "сообщение 1": f"Вы поняли! Ответом было {rand_num}"})
прервать догадку elif < rand_num: попыток -= 1 возвращает рендеринг(запрос, 'easy.html', {'attempts': попытки, "message2_a": "Слишком низкий уровень", "message2_b": "Угадайте еще раз"})
если угадать, то > случайное число: попыток -= 1 возвращает рендеринг(запрос, 'easy.html', {'попытки': попытки, "сообщение 3_a": "Слишком высокое значение", "сообщение 2_b": "Угадайте еще раз""})
попыток -= 1 возвращает рендеринг(запрос, 'easy.html', {'попытки': попытки, 'угадать': угадать, 'rand_num': ранд_нум}) возвращает рендеринг(запрос, 'easy.html')

я пытаюсь запустить этот код на Django. но он не запускается..

Вы можете явно проверить, существуют ли переменные перед выполнением сравнения.

{% if guess is not None and rand_num is not None %}
    {% if guess == rand_num %}
        <h1>{{ message1 }}</h1>
    {% elif guess > rand_num %}
        <h1>{{ message3_a }}</h1>
        <h1>{{ message3_b }}</h1>
    {% elif guess < rand_num %}
        <h1>{{ message2_a }}</h1>
        <h1>{{ message2_b }}</h1>
    {% endif %}
{% else %}
    <h1>No guess or random number provided.</h1>
{% endif %}

В качестве альтернативы вы можете использовать фильтр по умолчанию, чтобы указать значение по умолчанию, если переменная отсутствует или равна None

{% if guess is not None or rand_num is not None %}
    {% if guess|default:0 == rand_num|default:0 %}
        <h1>{{ message1 }}</h1>
    {% elif guess|default:0 > rand_num|default:0 %}
        <h1>{{ message3_a }}</h1>
        <h1>{{ message3_b }}</h1>
    {% elif guess|default:0 < rand_num|default:0 %}
        <h1>{{ message2_a }}</h1>
        <h1>{{ message2_b }}</h1>
    {% endif %}
{% else %}
    <h1>No guess or random number provided.</h1>
{% endif %}

Возможно, вам захочется сделать что-то еще, чтобы подтвердить, что ваш параметр guessed_number существует и в конечном итоге является значением int. Тогда остальная часть этой логики должна быть более понятной.

Вы можете:

  1. Убедитесь, что параметр запроса присутствует в первую очередь, а не равен None

  2. Убедитесь, что предположение является действительным целым числом

     guess = request.GET.get('guessed_number', None)
     if not guess:
         return HttpResponseBadRequest('You must provide a guess number')
    
     try:
         guess_number = int(guess)
    
     except ValueError:
         return HttpResponseBadRequest('Guess number must be an integer')
    
     # do the rest of the logic with assurance that "guess" is an int you can use
    
Вернуться на верх