Comment obtenir des valeurs à partir des champs de formulaire dans le cadre Django? Je souhaite le faire dans les vues, pas dans les modèles ...
tiliser un formulaire dans une vue l'explique assez bien.
Le modèle standard de traitement d'un formulaire dans une vue se présente comme suit:
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
print form.cleaned_data['my_form_field_name']
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render_to_response('contact.html', {
'form': form,
})
Faites votre choix:
def my_view(request):
if request.method == 'POST':
print request.POST.get('my_field')
form = MyForm(request.POST)
print form['my_field'].value()
print form.data['my_field']
if form.is_valid():
print form.cleaned_data['my_field']
print form.instance.my_field
form.save()
print form.instance.id # now this one can access id/pk
Remarque: le champ est accessible dès qu'il est disponible.
Vous pouvez le faire après avoir validé vos données.
if myform.is_valid():
data = myform.cleaned_data
field = data['field']
Lisez également les documents Django. Ils sont parfaits.
J'utilise Django 1.7+ et python 2.7+, la solution ci-dessus ne fonctionne pas. Et la valeur d'entrée dans le formulaire peut être utilisée POST comme ci-dessous (utilisez le même formulaire ci-dessus):
if form.is_valid():
data = request.POST.get('my_form_field_name')
print data
J'espère que cela t'aides.
Pour récupérer des données de formulaire qui envoient une demande de poste, vous pouvez le faire comme ceci
def login_view(request):
if(request.POST):
login_data = request.POST.dict()
username = login_data.get("username")
password = login_data.get("password")
user_type = login_data.get("user_type")
print(user_type, username, password)
return HttpResponse("This is a post request")
else:
return render(request, "base.html")