A parser for nested data in multipart form
Project description
Nested-multipart-parser
Parser for nested data in multipart form, you can use it anyways, and you have a django rest framework integration
Installation
pip install nested-multipart-parser
Usage
What is doing
the parser take the request data and transform to dictionary
exemple:
# input
{
'title': 'title',
'date': "time",
'simple_object[my_key]': 'title'
'simple_object[my_list][0]': True
'langs[0][id]': 666,
'langs[0][title]': 'title',
'langs[0][description]': 'description',
'langs[0][language]': "language",
'langs[1][id]': 4566,
'langs[1][title]': 'title1',
'langs[1][description]': 'description1',
'langs[1][language]': "language1"
}
# results are:
{
'title': 'title',
'date': "time",
'simple_object': {
'my_key': 'title',
'my_list': [
True
]
},
'langs': [
{
'id': 666,
'title': 'title',
'description': 'description',
'language': 'language'
},
{
'id': 4566,
'title': 'title1',
'description': 'description1',
'language': 'language1'
}
]
}
How is work
for this working perfectly you need to follow this rules:
- a first key need to be set ex: 'title[0]' or 'title', in both the first key is 'title'
- each sub key need to enclose by brackets "[--your-key--]"
- if sub key are a full number, is converted to list
- if sub key is Not a number is converted to dictionary
- the key can't be rewite ex:
data = {
'title[0]': 'my-value'
}
# output
output = {
'title': [
'my-value'
]
}
# invalid key
data = {
'title[688]': 'my-value'
}
# ERROR , you set a number is upper thans actual list
# wrong format
data = {
'title[0]]]': 'my-value',
'title[0': 'my-value',
'title[': 'my-value',
'title[]': 'my-value',
'[]': 'my-value',
}
data = {
'title': 42,
'title[object]': 42
}
# Error , title as alerady set by primitive value (int, boolean or string)
# many element in list
data = {
'title[0]': 'my-value',
'title[1]': 'my-second-value'
}
# output
output = {
'title': [
'my-value',
'my-second-value'
]
}
# converted to object
data = {
'title[key0]': 'my-value',
'title[key7]': 'my-second-value'
}
# output
output = {
'title': {
'key0': 'my-value',
'key7': 'my-second-value'
}
}
# you have no limit for chained key
data = {
'the[0][chained][key][0][are][awesome][0][0]': 'im here !!'
}
# output
output: {
'the': [
{
'chained':{
'key': [
{
'are': {
'awesome':
[
[
'im here !!'
]
]
}
}
]
}
}
]
}
How to use it
for every framwork
from nested_multipart_parser import NestedParser
def my_view():
parser = NestedParser(data)
if parser.is_valid():
validate_data = parser.validate_data
...
else:
print(parser.errors)
for django rest framwork
from nested_multipart_parser.drf import DrfNestedParser
...
class YourViewSet(viewsets.ViewSet):
parser_classes = (DrfNestedParser,)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for nested-multipart-parser-0.0.3.zip
Algorithm | Hash digest | |
---|---|---|
SHA256 | d4e59213b07bec89fce8b55c22796aff28fd3efa7eb680a7150f23f8e870bc55 |
|
MD5 | 21ce9fa20244da5a7c2e42e4654ef238 |
|
BLAKE2b-256 | 9b55f13ace83cf4fb1c2ced0f1eef0a9a576a721b7c785895945ade12635b01c |