Шаблон Django не показывает весь список на мой взгляд - PullRequest
0 голосов
/ 15 февраля 2019

Моя функция просмотра печатает весь список в терминале, но она показывает только 1 строку в шаблоне (веб, html-страница), как исправить мой код для вывода с одинакового терминала.

def snmpWALK(request):

    if request.method=='GET':
        host= 'localhost'
        oid = '1.3.6.1.2.1.1.9.1.2'
        for (errorIndication,
            errorStatus,
            errorIndex,
            varBinds) in nextCmd(SnmpEngine(),
                                CommunityData('public'),
                                UdpTransportTarget((host, 161)),
                                ContextData(),
                                ObjectType(ObjectIdentity(oid)),
                                lookupMib=False,
                                lexicographicMode=False):

            if errorIndication:
                print(errorIndication, file=sys.stderr)
                break

            elif errorStatus:
                print('%s at %s' % (errorStatus.prettyPrint(),
                                    errorIndex and varBinds[int(errorIndex) - 1][0] or '?'), file=sys.stderr)
            break

            else:

                MyList = []
                for varBind in varBinds:

                    thing='%s = %s' % varBind
                    MyList.append(thing)

            print (MyList)


    return render(request, 'snmpWALK.html', {'MyList':MyList})

/ snmpWALK.html

{% block content %} 
{{MyList}}
{% endblock %}

печать терминала

['1.3.6.1.2.1.1.9.1.2.1 = 1.3.6.1.6.3.11.3.1.1']

[' 1.3.6.1.2.1.1.9.1.2.2 = 1.3.6.1.6.3.15.2.1.1 ']

[' 1.3.6.1.2.1.1.9.1.2.3 = 1.3.6.1.6.3.10.3.1.1 ']

[' 1.3.6.1.2.1.1.9.1.2.4 = 1.3.6.1.6.3.1 ']

['1.3.6.1.2.1.1.9.1.2.5 = 1.3.6.1.6.3.16.2.2.1']

['1.3.6.1.2.1.1.9.1.2.6 = 1.3.6.1.2.1.49 ']

[' 1.3.6.1.2.1.1.9.1.2.7 = 1.3.6.1.2.1.4 ']

[' 1.3.6.1.2.1.1.9.1.2.8 = 1.3.6.1.2.1.50 ']

[' 1.3.6.1.2.1.1.9.1.2.9 = 1.3.6.1.6.3.13.3.1.3 ']

['1.3.6.1.2.1.1.9.1.2.10 = 1.3.6.1.2.1.92 ']

веб-печать

[' 1.3.6.1.2.1.1.9.1.2.10 = 1,3.6.1.2.1.92' ]

1 Ответ

0 голосов
/ 15 февраля 2019

Отступ, безусловно, делает ваш код очень трудным для чтения.Я подозреваю, что причиной того, что вы видите несколько списков, является то, что ваш вызов print находится внутри цикла for.Вот как это исправить:


def snmpWALK(request):
    all_lists = []
    if request.method=='GET':
        host= 'localhost'
        oid = '1.3.6.1.2.1.1.9.1.2'        
        for t in nextCmd(
                SnmpEngine(),
                CommunityData('public'),
                UdpTransportTarget((host, 161)),
                ContextData(),
                ObjectType(ObjectIdentity(oid)),
                lookupMib=False,
                lexicographicMode=False):
            # I broke this up for purposes of formatting 
            # on SO.  normally, I would just stick these in
            # the for loop above.
            errorIndication, errorStatus = t[0], t[1]
            errorIndex, varBinds = t[2], t[3]
            if errorIndication:
                print(errorIndication, file=sys.stderr)
                break
            elif errorStatus:
                print('%s at %s' % (
                    errorStatus.prettyPrint(),
                    errorIndex and varBinds[int(errorIndex) - 1][0] or '?'
                ), file=sys.stderr)
                break
            else:
                MyList = []
                for varBind in varBinds:
                    thing='%s = %s' % varBind
                    MyList.append(thing)
            # this is within the for loop!!!
            print(MyList)
            <b>all_lists.append(MyList)
    return render(request, 'snmpWALK.html', {'MyList': all_lists})</b>

В общем, ваш код был довольно трудным для чтения для тех из нас, кому нравится помогать в SO, потому что (1) он был неправильно с отступом (вы можете увидеть break заявлений в ОП) и (2) он не следовал PEP8.YMMV, если вы хотите следовать этим соглашениям / предложениям, вам будет намного легче помочь, если вы это сделаете.

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