Ich habe ein [scheinbar] einfaches Formular für Kunden erstellt, jedoch nachdem der Benutzer das Formular übermittelt, wenn ich versuche, die Antwort zu überprüfen m- ich erhalte:Django: "Anfrage" enthält nicht die "Methode" (POST/GET)
Ausnahmetyp: Attribute Ausnahmewert: ‚QueryDict‘ Objekt hat kein Attribut ‚Methode‘
wenn ich checkte ich sah, dass die Anforderungsobjekte enthält nur die Daten, im Formular eingereicht und enthält nicht das Attribut "method"
Dies ist die Funktion, die von der Form verwendet wird:
def institutionapply(request):
print(request)
print("request: ",request)
a=get_ip(request)
print (a)
country=get_country(request)
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = institutionapply(request.POST)
print ("form in post clause:",form)
#print ("duration output:",form.duration)
# check whether it's valid:
if form.is_valid():
print ("print form is valid")
print (form.cleaned_data['title'])
print (form.cleaned_data['country'])
# process the data in form.cleaned_data as required
# ...
# redirect to a new URL:
#return HttpResponseRedirect('/thanks/')
#return redirect(name='home')
# if a GET (or any other method) we'll create a blank form
else:
# create a form instance and populate it with data from the request:
data = {'title': '', 'first': '', 'last':'', 'country':'','internationalprefix':'','phone':'','email':'','institutionname':'','institutionurl':'',}
form = institutionform(data)
return render(request,'app/intitutionapply.html', {'form': form})
irgendwelche Ideen, warum die „Methode“ Objekt nirgends zu finden ist?
EDIT: url Konfiguration:
urlpatterns = [
url(r'^$', views.home, name='home'),
url(r'^InstitutionApply$', views.institutionapply, name='institutionapply'),
url(r'^contact$', views.contact, name='contact'),
url(r'^about', views.about, name='about'),
url(r'^admin/', admin.site.urls),
aus dem HTML-Template, das Formular Erklärung:
die Funktionen von views.py
def get_country(request):
a=get_ip(request)
country='United States'
g = GeoIP2(path='D:/newTelumis/newTelumis/GeoLite2-Country.mmdb')
return country
def get_ip(request):
try:
x_forward= request.META.get("HTTP_X_FORWARD_FOR")
if x_forward:
ip=x_forward.split(",")[0]
else:
ip=request.META.get("REMOTE_ADDR")
except:
ip=""
return ip
Was zeigen die Druckanweisungen? Und wird diese Funktion direkt von einer URL aufgerufen? –
Verändern 'get_ip' oder' get_country' die Anfrage? – Sayse
@DanielRoseman Der Druck zeigt: Anfrage: das Formular ist auf die gleiche URL (wenn das ist, was Sie gemeint haben) –
Dror