web-dev-qa-db-fra.com

Comment obtenir de la valeur du champ de formulaire dans Django framework?

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 ...

88
kspacja

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,
    })
111
miku

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.

42
laffuste

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.

25
ikostia

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.

5
zhihong

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")
3
ChandyShot