Ich versuche, eine django Formulardaten zu packen und anzuzeigen, die durch POST-Anforderung comping, aber ich bin für ein mein Feldnamen gehen auf KeyError stecken,KeyError bei/Docker/Auth/django 1.11 Formen
hier ist der Fehler:
KeyError at /docker/auth/
'docker_name'
Request Method: POST
Request URL: http://127.0.0.1:8000/docker/auth/
Django Version: 1.11.3
Exception Type: KeyError
Exception Value:
'docker_name'
Exception Location: /Users/abdul/Documents/IGui/dockerDep/views.py in post, line 21
Python Executable: /Users/abdul/IstioVirEnv/bin/python
Python Version: 3.6.1
hier ist mein models.py:
from django.db import models
class DockerAuth(models.Model):
docker_name = models.CharField(max_length=255)
docker_pass = models.CharField(max_length=255)
hier ist mein forms.py:
from django.forms import forms
from .import models
class DockerAuthForm(forms.Form):
class Meta:
fields = ('docker_name', 'docker_pass')
model = models.DockerAuth
Hier ist mein views.py:
from django.shortcuts import render
from django.views.generic import CreateView
from . import forms
class DockerAuth(CreateView):
form_class = forms.DockerAuthForm
def get(self, request, *args, **kwargs):
return render(request, 'dockerDep/docker_login.html', {})
def post(self, request, *args, **kwargs):
lform = forms.DockerAuthForm(request.POST)
context = {}
if lform.is_valid():
data = lform.cleaned_data
name = data['docker_name']
password = data['docker_pass']
context = {
"form": lform,
"uname": name,
"upass": password
}
return render(request, 'dockerDep/response.html', context)
Hier ist meine HTML-Template-Form:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>DOCKER</title>
</head>
<body>
<form method="post" action=".">
{% csrf_token %}
<input type="text" name="docker_name" title="Name">
<input type="password" name="docker_pass" title="Password">.
<input type="submit" value="Submit"/>
</form>
</body>
</html>
Können zeigen Sie das Modell? –
Es macht keinen Sinn, 'CreateView' zu verwenden, wenn Sie' get' und 'post' außer Kraft setzen. Sie verlieren alle Funktionen der Ansicht. In jedem Fall ist es verwirrend, CreateView zu verwenden, wenn Sie nichts erstellen. Es wäre besser, ['FormView'] (https://docs.djangoproject.com/en/1.11/ref/class-based-views/generic-editing/#formview) abzuleiten und' form_valid' zu überschreiben. Oder, wenn Sie 'get' und' post' definieren wollen, einfach Unterklasse 'View'. – Alasdair