Невозможно получить Django HttpResponse - PullRequest
0 голосов
/ 09 июля 2019

Небольшое описание того, что я пытаюсь сделать. Я хочу создать пользовательский интерфейс (web / HTML), через который я могу отправлять команды маршрутизатору и отображать результат на веб-странице / HTML.

Вот код, который я использую: -

Views.py

from django.shortcuts import render
from first_app.forms import CmdForm
from django.http import HttpResponse

def index(request):
  my_dict = {'insert_me': ""}
  return render(request,'first_app/index.html',context=my_dict)

def form_name_view(request):
    if request.method == "POST":
       form = CmdForm(request.POST)
       if form.is_valid():
        from netmiko import ConnectHandler
        devices = {
        'device_type':'cisco_ios',
        'ip':'192.168.50.145',
        'username':'me',
        'password':'12345',
        'secret':'12345',
        'port':'22'
        }
        cmd = request.POST.get('command', '')
        netconnect = ConnectHandler(**devices)
        #print("connection established with", devices['ip'])

        output = netconnect.send_command(cmd)
        return render(request,'first_app/forms.html', {'form': form, 
                'output':output})
    else:
        form = CmdForm()
    return render(request,'first_app/forms.html', {'form': form})

forms.py

from django import forms

class CmdForm(forms.Form):
        command = forms.CharField(label='Command to execute')

urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import include
from first_app import views

urlpatterns = [
    path('Automation_page/', views.form_name_view,name='IP form'),
    path('admin/', admin.site.urls),
    path('', views.index,name='first'),
    path('first_app/',include('first_app.urls')),
    ]

forms.html

<code><!DOCTYPE html>
{% load staticfiles %}
<html lang="en" dir="ltr">
 <head>
  <meta charset="utf-8">
   <title>FORMS</title>
 </head>
 <body>
  <h1> IP address form </h1>
   <p>Run command:</p>
   <form method="POST"> {% csrf_token %}
    {{ form }}
   <input type="submit" value="Run command!" />
   </form><br>
   {% if request.POST %}
    <p>Command output:</p>
    <pre>{{ output }}
{% endif%}

я получаю сообщение об ошибке при посещении страницы Automation_page /

ValueError at / Automation_page / Представление first_app.views.form_name_view не возвращало объект HttpResponse. Вместо этого он вернул None. Метод запроса: GET URL запроса: http://127.0.0.1:8000/Automation_page/ Джанго версия: 2.2.3 Тип исключения: ValueError Исключение:
Представление first_app.views.form_name_view не возвращало объект HttpResponse. Вместо этого он вернул None. Расположение исключения: K: \ Work \ DevNet \ ENV1 \ lib \ site-packages \ django \ core \ handlers \ base.py в _get_response, строка 126 Исполняемый файл Python: K: \ Work \ DevNet \ ENV1 \ Scripts \ python.exe Версия Python: 3.7.3 Python Path:
[ 'K: \ Work \ DevNet \ first_project', 'K: \ Work \ DevNet \ ENV1 \ Scripts \ python37.zip', 'K: \ Work \ DevNet \ ENV1 \ DLL файлы', 'K: \ Work \ DevNet \ ENV1 \ Lib', 'K: \ Work \ DevNet \ ENV1 \ Scripts', 'C: \ Users \ карта \ AppData \ Local \ программы \ питон \ python37-32 \ Lib', 'C: \ Users \ карта \ AppData \ Local \ программы \ питон \ python37-32 \ DLL файлы', 'K: \ Work \ DevNet \ ENV1', 'K: \ Work \ DevNet \ ENV1 \ Lib \ сайт-пакеты']

Нужна помощь по этому вопросу. спасибо, кто готов помочь

Ответы [ 2 ]

0 голосов
/ 10 июля 2019

Мне удалось выяснить решение моей проблемы.делиться этим для других, если они могут общаться.: -)

В views.py Добавьте следующий код с отступом для первого оператора if.

else:
    return render(request,'first_app/forms.html', {})
0 голосов
/ 09 июля 2019

Последняя строка должна быть перемещена на один отступ влево, поэтому она удаляется, если форма недействительна.

else:
    form = CmdForm()
return render(request,'first_app/forms.html', {'form': form})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...