How to get value from form field in django framework?

PythonDjango

Python Problem Overview


How do I get values from form fields in the django framework? I want to do this in views, not in templates...

Python Solutions


Solution 1 - Python

Using a form in a view pretty much explains it.

> The standard pattern for processing a form in a view looks like this:

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

Solution 2 - Python

Take your pick:

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

Note: the field is accessed as soon as it's available.

Solution 3 - Python

You can do this after you validate your data.

if myform.is_valid():
  data = myform.cleaned_data
  field = data['field']

Also, read the django docs. They are perfect.

Solution 4 - Python

To retrieve data from form which send post request you can do it like this

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

Solution 5 - Python

I use django 1.7+ and python 2.7+, the solution above dose not work. And the input value in the form can be got use POST as below (use the same form above):

if form.is_valid():
  data = request.POST.get('my_form_field_name')
  print data

Hope this helps.

Solution 6 - Python

It is easy if you are using django version 3.1 and above

def login_view(request):
    if(request.POST):
        yourForm= YourForm(request.POST)
        itemValue = yourForm['your_filed_name'].value()
        # Check if you get the value
        return HttpResponse(itemValue )
    else:
        return render(request, "base.html")

Solution 7 - Python

Cleaned_data converts the submitted form into a dict where the keys represent the attribute name used in form and value is user submitted response. to access a particular value in the views we write:

formname.cleaned_data['fieldname']

Solution 8 - Python

Incase of django viewsets or APIView you can simply get the request.data and if you're sure the data being passed to the view is always form data then

  1. copy the data e.g data = request.data.copy()
  2. form data is returned with key values in lists so data['key'][0] to get the first element of the list which is the value first value and most likely only value if they key only returns a single value of the key.

for example

class EquipmentView(APIView):


    def post(self, request: Request):
        data = request.data.copy()
        author = data.get('author')[0]
        

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkspacjaView Question on Stackoverflow
Solution 1 - PythonmikuView Answer on Stackoverflow
Solution 2 - PythonlaffusteView Answer on Stackoverflow
Solution 3 - PythonikostiaView Answer on Stackoverflow
Solution 4 - PythonChandyShotView Answer on Stackoverflow
Solution 5 - PythonzhihongView Answer on Stackoverflow
Solution 6 - PythonBushra MustofaView Answer on Stackoverflow
Solution 7 - PythonPoojaView Answer on Stackoverflow
Solution 8 - PythonalvinMemphisView Answer on Stackoverflow