|
Technical Interview Questions
C++ Interview Questions
Php Interview Questions
Xml
Interview Questions
C Interview Questions
.........More
Soft Skills
Communication Skills
Leadership Skills
.........More
|
|
Python Interview Questions and Answers
How to make Forms in python?
The FieldStorage class of the cgi module has all that is
needed to handle submited forms.
import cgi
form = cgi.FieldStorage() # instantiate only once!
It is transparent to the programmer if the data was
submited by GET or by POST. The interface is exactly the
same.
* Unique field names :
Suppose we have this HTML form which submits a field
named name to a python CGI script named process_form.py:
<html><body>
<form method="get" action="process_form.py">
Name: <input type="text" name="name">
<input type="submit" value="Submit">
</form>
</body></html>
This is the process_form.py script:
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage() # instantiate only once!
name = form.getfirst('name', 'empty')
# Avoid script injection escaping the user input
name = cgi.escape(name)
print """\
Content-Type: text/html\n
<html><body>
<p>The submited name was "%s"</p>
</body></html>
""" % name
The getfirst() method returns the first value of the
named field or a default or None if no field with that
name was submited or if it is empty. If there is more
than one field with the same name only the first will be
returned.
If you change the HTML form method from get to post the
process_form.py script will be the same.
* Multiple field names:
If there is more than one field with the same name like
in HTML input check boxes then the method to be used is
getlist(). It will return a list containing as many
items (the values) as checked boxes. If no check box was
checked the list will be empty.
Sample HTML with check boxes:
<html><body>
<form method="post" action="process_check.py">
Red<input type="checkbox" name="color" value="red">
Green<input type="checkbox" name="color" value="green">
<input type="submit" value="Submit">
</form>
</body></html>
And the corresponding process_check.py script:
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()
# getlist() returns a list containing the
# values of the fields with the given name
colors = form.getlist('color')
print "Content-Type: text/html\n"
print '<html><body>'
print 'The colors list:', colors
for color in colors:
print '<p>', cgi.escape(color), '</p>'
print '</body></html>'
* File Upload;
To upload a file the HTML form must have the enctype
attribute set to multipart/form-data. The input tag with
the file type will create a "Browse" button.
<html><body>
<form enctype="multipart/form-data" action="save_file.py"
method="post">
<p>File: <input type="file" name="file"></p>
<p><input type="submit" value="Upload"></p>
</form>
</body></html>
The getfirst() and getlist() methods will only return
the file(s) content. To also get the filename it is
necessary to access a nested FieldStorage instance by
its index in the top FieldStorage instance.
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()
# A nested FieldStorage instance holds the file
fileitem = form['file']
# Test if the file was uploaded
if fileitem.filename:
open('files/' + fileitem.filename, 'w').write(fileitem.file.read())
message = 'The file "' + fileitem.filename + '" was
uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
The Apache user must have write permission on the
directory where the file will be saved.
* Big File Upload
To handle big files without using all the available
memory a generator can be used. The generator will
return the file in small chunks:
#!/usr/bin/env python
import cgi
form = cgi.FieldStorage()
# Generator to buffer file chunks
def fbuffer(f, chunk_size=10000):
while True:
chunk = f.read(chunk_size)
if not chunk: break
yield chunk
# A nested FieldStorage instance holds the file
fileitem = form['file']
# Test if the file was uploaded
if fileitem.filename:
f = open('files/' + fileitem.filename, 'w')
# Read the file in chunks
for chunk in fbuffer(fileitem.file):
f.write(chunk)
f.close()
message = 'The file "' + fileitem.filename + '" was
uploaded successfully'
else:
message = 'No file was uploaded'
print """\
Content-Type: text/html\n
<html><body>
<p>%s</p>
</body></html>
""" % (message,)
Page Numbers : 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
HTML Interview
Questions for more HTML Interview Questions with Answers
Check
Job Interview Questions
for more Interview Questions with Answers
|