Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单返回元组而不是字符串_Python_Django - Fatal编程技术网

Python Django表单返回元组而不是字符串

Python Django表单返回元组而不是字符串,python,django,Python,Django,我已经构建了一个网页来展示我的团队自动化脚本,这个网页应该返回一个从下拉菜单压缩成字符串的字典 我得到的不是字符串,而是我认为的元组。我需要一个正常的字符串返回,但不知道元组的原因 观点: import datetime import json from django.shortcuts import render, redirect from django.http import HttpResponse from django.contrib.auth import authenticate

我已经构建了一个网页来展示我的团队自动化脚本,这个网页应该返回一个从下拉菜单压缩成字符串的字典

我得到的不是字符串,而是我认为的元组。我需要一个正常的字符串返回,但不知道元组的原因

观点:

import datetime
import json
from django.shortcuts import render, redirect
from django.http import HttpResponse
from django.contrib.auth import authenticate
from django.template import loader
from django.urls import reverse
from django.contrib import auth
from home.models import ChangeLog
from health.models import FirewallInfo
from . import forms
from . import sftpadd

def ipadd_index(request):
    if request.user.is_staff:
        ipadd = forms.IPAdd()
        return render(request, 'ipadd/index.html', {'ipadd': ipadd})
    else:
        return redirect('/unauthorized/')

def ipadd_action(request):
    if request.method == 'POST':
        form = forms.IPAdd(request.POST)
        if form.is_valid():
            casenum = request.POST.get('casenum')
            ipaddr = request.POST.get('ipaddr')
            objgp = request.POST.get('objgp')
            cidr = request.POST.get('cidr')
            objgp = ''.join(objgp)
            objgp = json.loads(objgp)
            asa = []
            for k, v in objgp:
                OBJGP = k
                for item in v:
                    firewall = FirewallInfo.get(fw_name=item)
                    asa.append(firewall.fw_ip)
            for fw in asa:
                if cidr == 'HOST':
                    sftpadd.sftpadd_host(ipaddr, fw)
                else:
                    sftpadd.sftpadd_sub(ipaddr, cidr, fw)
                sftpadd.save(fw)
            dbdetails = str(ipaddr) + ' has been added to ' + str(OBJGP)
            dbentry = ChangeLog(
                user_name=request.user.username,
                change_date=datetime.datetime.today().strftime('%Y-%m-%d'),
                change_cr='N/A',
                change_type='IP Add',
                details=dbdetails,
                case_num=casenum)
            dbentry.save()
            item = ChangeLog.get(pk=dbentry.pk)
            return render(request, 'change/detail.html', {'item': item})
        else:
            return redirect('/Oops/')
    else:
        return redirect('/ipadd/')
表格:

from django import forms
from . import models

class IPAdd(forms.Form):
    CIDR = [
        ('HOST', 'Host'),
        (24, '/24'),
        (25, '/25'),
        (26, '/26'),
        (27, '/27'),
        (28, '/28'),
        (29, '/29'),
        (30, '/30'),
        (31, '/31'),
    ]
    OBJGP = [
        (
            None,
            'Select',
        ),
        (
            {"EXT-SFTPALLOWED": ["IPAYDEVDMZSMO-FW", "IPAYATX-EDGE-FW", "IPAYPRODDMZBMO-FW", "IPAYDEVDMZSMO-FW"]},
            'EXT-SFTPALLOWED',
        ),
    ]
    casenum = forms.IntegerField(
        widget=forms.NumberInput(attrs={'class': 'form-control', 'placeholder': 'Case#'}),
        required=True,
        label="")
    ipaddr = forms.GenericIPAddressField(
        widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'IP Address'}),
        required=True,
        label='')
    cidr = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control', 'placeholder': 'Type'}),
        choices=(CIDR),
        label='')
    objgp = forms.ChoiceField(
        widget=forms.Select(attrs={'class': 'form-control', 'placeholder': 'Type'}),
        choices=(OBJGP),
        label='')
html值:

<option value="{&#39;EXT-SFTPALLOWED&#39;: [&#39;IPAYDEVDMZSMO-FW&#39;, &#39;IPAYATX-EDGE-FW&#39;, &#39;IPAYPRODDMZBMO-FW&#39;, &#39;IPAYDEVDMZSMO-FW&#39;]}">
    EXT-SFTPALLOWED
</option>

根据问题中的数据,
objgp
的POST值是一个字符串。如果元组的第一个元素后面有逗号,则其周围的Paretose仅为元组。如果没有逗号(将其转换为元组),parethesis不会改变它们所包围的值。您的问题到底是什么?我看到你试图在你的问题中添加一个图像,但是没有与实际图像的链接。我正在尝试json.loads objgp来迭代字典。我尝试了所有的方法来加载它,但没有成功。我围绕这个问题重新编写了脚本,所以问题得到了解决,但我仍然不明白为什么会从一个不正常的html表单发送元组。的POST值根据您问题中的数据,
objgp
是一个字符串。如果元组的第一个元素后面有逗号,则其周围的Paretose仅为元组。如果没有逗号(将其转换为元组),parethesis不会改变它们所包围的值。您的问题到底是什么?我看到你试图在你的问题中添加一个图像,但是没有与实际图像的链接。我正在尝试json.loads objgp来迭代字典。我尝试了所有的方法来加载它,但没有成功。我重新编写了关于这个问题的脚本,所以问题得到了解决,但我仍然不明白为什么会从一个不正常的html表单发送元组。
casenum     '1234'
objgp       ("{'EXT-SFTPALLOWED': ['IPAYDEVDMZSMO-FW', 'IPAYATX-EDGE-FW', 'IPAYPRODDMZBMO-FW', 'IPAYDEVDMZSMO-FW']}")
csrfmiddlewaretoken     '______________________________'
ipaddr      '10.1.1.10'
cidr        'HOST'