User Information Form

get posted form data in python

hi all, i need to get all the data in the list (which is posted in the form) and store it, separating each list item with comma’s. Its really clear in the code. this is what ive tried so far..it doesnt compile and it seems to complain about this line of code photos = form[«photolist»]. thanks for any help html form—>add.html

import cgitb; cgitb.enable() import cgi import sys form = cgi.FieldStorage() photos = form["photolist"] i=0 for photo in photos: i = i + 1 finalPhoto = finalPhoto + "," + photo[i]
  • 4 Contributors
  • 3 Replies
  • 3K Views
  • 5 Years Discussion Span
  • Latest Post 13 Years Ago Latest Post by bikehike90

All I could find in my Python toolbox that pertains to the retrieval of form values is this little NET module written by Mark Lee Smith. It is supposed to make CGI programming in Python easier.

All 3 Replies

All I could find in my Python toolbox that pertains to the retrieval of form values is this little NET module written by Mark Lee Smith. It is supposed to make CGI programming in Python easier.

This attachment is potentially unsafe to open. It may be an executable that is capable of making changes to your file system, or it may require specific software to open. Use caution and only open this attachment if you are comfortable working with zip files.

Here is a small module/httpwrapper that I wrote that parses GET, POST and SERVER data and stores seperate lists of keys, values and a dict of pairs of each.

# Alexander Sherwin # 08/14/2005 v1.2 # # This class is designed to look for and parse miscellaneous data # that is not handled internally through Python (i.e. POST, GET.) # # Currently, upon instantiation of the class it automatically parses # all POST, GET and SERVER data available to the script. # # Report any errors, bugs or contributions & additions # to alex.sherwin@gmail.com. This class has been developed and tested on # nearlyfreespeech.net servers (FreeBSD, Apache 2.x.) import sys import os class HTTPWrap: """Takes the sys.stdin sent from the webserver and parses it for POST variables This class may not work if your webserver sends other types of information to serverside scripts as sys.stdin .process_post() - Initiates the parsing of raw data in std.in .process_get() - Initiates the parsing of ENV var QUERY_STRING .server(str) - Checks SERVER vars in server_dict and returns the value - if the key exists, False if it doesn't .post_keys - List of POST keys (form names) .post_vals - List of POST values (form values) .post_dict - Dict of POST keys and values .get_keys - List of GET keys .get_vals - List of GET values .get_dict - Dict of GET keys and values .server_keys - List of SERVER keys .server_vals - List of SERVER values .server_dict - Dict of SERVER keys and values .has_post - True if script has received POST data .has_get - True if script has received GET data .server_dict - Dict of SERVER keys and values""" post_keys = [] # init all lists & dictionaries post_vals = [] post_dict = <> get_keys = [] get_vals = [] get_dict = <> server_keys = [] server_vals = [] server_dict = <> has_post = False # Instantiates with no POST vars has_get = False # Instantiates with no GET vars def __init__(self): """Initialize by determining if there is any POST or GET vars""" self.__raw = sys.stdin.readline() # read from sys.stdin if len(self.__raw): self.process_post() # if POST string length > 0, parse it self.__raw = "" # init empty string for k in os.environ.items(): if "QUERY_STRING" in k: # find GET data self.__raw = k[1] # save GET data else: self.server_dict[k[0]] = k[1] # save SERVER vars self.server_keys.append(k[0]) self.server_vals.append(k[1]) if len(self.__raw): self.process_get() # if GET string length > 0, parse it def server(self, serverVar): """Check server_dict for a server variable, return it's value""" if self.server_dict.has_key(serverVar): return self.server_dict[serverVar] # return value else: return False def process_post(self): """Read sys.stdin and parse it to obtain orderly POST data""" self.has_post = True # set boolean for exterior uses rawlist = self.__raw.split('&') # obtain list of key=val strings for k in rawlist: tmpli = k.split('=') # get key, val list self.post_keys.append(tmpli[0]) # save key self.post_vals.append(tmpli[1]) # save value self.post_dict[tmpli[0]] = tmpli[1] # save pair in dict def process_get(self): """Parse self.__raw to obtain orderly GET data""" self.has_get = True # set boolean for exterior uses rawlist = self.__raw.split('&') # obtain list of key=val strings for k in rawlist: tmpli = k.split('=') # get key, val list self.get_keys.append(tmpli[0]) # save key self.get_vals.append(tmpli[1]) # save value self.get_dict[tmpli[0]] = tmpli[1] # save pair in dict

Источник

Читайте также:  Get div from html jquery

Как получить данные из формы Django при помощи Python

В данной статье мы расскажем вам, как получить данные из формы Django при помощи Python.

Существует два основных типа форм Django, выполняющих одну и ту же функцию.

Первый тип основан на классе форм Django.

Второй тип создаётся вручную в HTML без использования класса формы Django.

Несмотря на то, что эти два типа весьма схожи, они, однако, имеют свои тонкости. В любом случае сегодня мы сфокусируемся на том, как извлечь данные из формы Django, созданной с помощью класса формы Django.

Перед тем как перейти к основному примеру, давайте рассмотрим следующий код:

form= UserForm(request.POST or None) if form.is_valid(): data= form.cleaned_data.get("form_field") 

Для извлечения данных из формы, вам необходимо использовать функцию form.is_valid() вместе с функцией form.cleaned_data.get(), передавая имя поля формы в эту функцию как параметр.

Рассмотрим небольшой пример. Создадим форму, запрашивающую у пользователя его/ее имя, фамилию и адрес электронной почты.

Файл forms.py#

Ниже представлен код из файла forms.py:

from django import forms class UserForm(forms.Form): first_name= forms.CharField(max_length=100) last_name= forms.CharField(max_length=100) email= forms.EmailField() 

Итак, имя формы — UserForm. Имеет 3 поля: first_name, last_name и email.

Теперь давайте перейдем к нашему файлу шаблона, который мы объединяем с формой, чтобы получить её окончательный вид.

Файл шаблона index.html#

Ниже представлен код нашего шаблона index.html.

     
>

Your first name is >

Your last name is >

Your email is >

Итак, у нас тег , некоторый meta-тег, однако, форма находится в теле HTML-файла.

Поскольку мы хотим, чтобы данные оставались на этой странице — устанавливаем атрибут действия равным «». Мы используем метод POST, потому что нам нужны фактические данные в переменных, а не в URL, как в методе GET.

Читайте также:  Jira api python auth

Строка защищает от подделки межсайтовых запросов.

При помощи строки > наша форма отображается в файле шаблона.

После чего мы создаём кнопку submit и закрываем форму.

Следующий блок кода проверяет, была ли нажата кнопка submit. Если была, вывод отобразит данные, которые ввёл пользователь. Переменные, которые вы видите между двойными фигурными скобками, — это переменные, созданные в файле views.py, о котором мы поговорим далее.

Получение данных формы из файла views.py#

Наконец, у нас есть файл views.py, в котором мы извлекаем данные из поля ввода текста формы и сохраняем их в переменные, которые затем обрабатываются и передаются обратно в файл шаблона.

Итак, мы получаем данные из формы через функции form.is_valid() и form.cleaned_data.get(), как показано ниже:

from django.shortcuts import render from .forms import UserForm def index(request): submitbutton= request.POST.get("submit") firstname='' lastname='' emailvalue='' form= UserForm(request.POST or None) if form.is_valid(): firstname= form.cleaned_data.get("first_name") lastname= form.cleaned_data.get("last_name") emailvalue= form.cleaned_data.get("email") context= return render(request, 'UserInfo/index.html', context) 

Первым делом нам необходимо получить данные при помощи кнопки submit. Сделать это можно с помощью функции request.POST.get(), передавая ей аргумент “submit”. Здесь мы узнаём о состоянии кнопки submit, либо None (изначально, т.е. если кнопка не нажата), либо “Submit” после нажатия.

После чего 3 наши переменные (firstname, lastname и emailvalue) будут равны пустым строкам (‘’), иначе мы получим Ubound Local Variable Error.

Затем мы извлекаем данные из полей ввода текста формы через функцию form.cleaned_data.get(), в которой указываем имя поля формы. Мы просто храним эти значения в переменных.

Однако мы должны передать форму через функцию is_valid(). Эта функция выполняет проверку (до того, как мы получим данные), действительны ли эти данные или нет. Если данные недействительны, то мы не будем их извлекать. В противном случае — мы получаем “очищенные” данные (cleaned_data). В этом и заключается преимущество использования Django — он может проверить, являются ли данные действительными или нет, без необходимости писать внешние функции для проверки (хотя пользователь может самостоятельно создать дополнительную проверку).

Читайте также:  Конвертировать double to int java

Итак, мы создаём переменную firstname и устанавливаем её равной form.cleaned_data.get(‘first_name’). Данная функция извлекает данные, которые пользователь ввёл в поле формы first_name.

Затем мы создаём переменную lastname и устанавливаем её равной form.cleaned_data.get(‘last_name’). Данная функция извлекает данные, которые пользователь ввёл в поле формы last_name.

Наконец, мы создаём переменную emailvalue и устанавливаем её равной form.cleaned_data.get(’email’). Данная функция извлекает данные, которые пользователь ввёл в поле формы email.

Это все наши переменные. Затем мы передаём их в файл шаблона через контекстный словарь. Таким образом, мы можем вывести результаты в файле шаблона.

Таким образом мы можем получить данные из формы Django. Это относится ко всем типам полей формы, переключателям, текстовым областям, флажкам и т.д. Мы можем извлечь данные из этих полей формы с помощью функции form.cleaned_data.get().

После чего мы можем обработать эти данные так, как мы хотим.

Спасибо за внимание! Надеемся, что данная статья помогла вам.

Источник

Оцените статью