162π
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,
})
103π
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.
- [Django]-Django: Using F arguments in datetime.timedelta inside a query
- [Django]-Django Passing Custom Form Parameters to Formset
- [Django]-Django β what is the difference between render(), render_to_response() and direct_to_template()?
32π
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.
- [Django]-Using Cloudfront with Django S3Boto
- [Django]-Django model CharField: max_length does not work?
- [Django]-Django multiple template inheritance β is this the right style?
15π
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")
- [Django]-Python (and Django) best import practices
- [Django]-No URL to redirect to. Either provide a url or define a get_absolute_url method on the Model
- [Django]-Annotate with latest related object in Django
12π
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.
- [Django]-Django change default runserver port
- [Django]-Does django with mongodb make migrations a thing of the past?
- [Django]-H14 error in heroku β "no web processes running"
4π
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")
- [Django]-Django Server Error: port is already in use
- [Django]-Django proxy model and ForeignKey
- [Django]-Celery discover tasks in files with other filenames
1π
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']
- [Django]-Macros in django templates
- [Django]-Django 1.8 KeyError: 'manager' on relationship
- [Django]-Filtering dropdown values in django admin
0π
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
- copy the data e.g
data = request.data.copy()
- 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]
- [Django]-Itertools.groupby in a django template
- [Django]-Django: sqlite for dev, mysql for prod?
- [Django]-How to mix queryset results?