首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >无法获取Django HttpResponse

无法获取Django HttpResponse
EN

Stack Overflow用户
提问于 2019-07-10 02:06:09
回答 2查看 70关注 0票数 0

这是对我正在尝试做的事情的一个简短描述。我想做一个用户界面(web/HTML),通过它我可以向路由器发送命令,并在网页/HTML上显示结果。

下面是我使用的代码:

Views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
from django import forms

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

urls.py

代码语言:javascript
复制
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

代码语言:javascript
复制
<!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 }}</pre>
    {% endif %}
   </body>
  </html>

访问Automation_page/时出现错误

/Automation_page/视图first_app.views.form_name_view中的

ValueError未返回HttpResponse对象。相反,它返回None。请求方法: GET请求URL:http://127.0.0.1:8000/Automation_page/ Django版本: 2.2.3异常类型: ValueError异常值:

视图first_app.views.form_name_view未返回HttpResponse对象。相反,它返回None。异常位置:_get_response中的K:\Work\DevNet\ENV1\lib\site-packages\django\core\handlers\base.py,第126行Python可执行文件: K:\Work\DevNet\ENV1\Scripts\python.exe Python版本:3.7.3Python路径:

'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\karti\appdata\local\programs\python\python37-32\Lib','c:\users\karti\appdata\local\programs\python\python37-32\DLLs','K:\Work\DevNet\ENV1','K:\Work\DevNet\ENV1\lib\site-packages‘

在这方面需要帮助。感谢愿意提供帮助的人

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-10 14:12:22

我找到了我的问题的解决方案。分享给其他人,如果他们能产生共鸣的话。:-)

在views.py中,添加以下代码,并将缩进设置为第一个if语句。

代码语言:javascript
复制
else:
    return render(request,'first_app/forms.html', {})
票数 0
EN

Stack Overflow用户

发布于 2019-07-10 03:15:36

最后一行需要向左缩进一个缩进,因此如果表单无效,则命中它。

代码语言:javascript
复制
else:
    form = CmdForm()
return render(request,'first_app/forms.html', {'form': form})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56958357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档