Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file added apps/examples/__init__.py
Empty file.
6 changes: 6 additions & 0 deletions apps/examples/apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
from django.apps import AppConfig


class ExamplesConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'apps.examples'
Empty file.
7 changes: 7 additions & 0 deletions apps/examples/serializers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from rest_framework import serializers


class HTMLArraySerializer(serializers.Serializer):
name = serializers.CharField()
hours_open = serializers.IntegerField()
foods = serializers.ListField()
8 changes: 8 additions & 0 deletions apps/examples/urls.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from django.urls import path

from . import views


urlpatterns = [
path('examples/html-array', views.HTMLArray.as_view(), name='examples-html-array'),
]
26 changes: 26 additions & 0 deletions apps/examples/views.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
from rest_framework import views, permissions
from rest_framework.response import Response
from rest_framework.parsers import FormParser, MultiPartParser

from .serializers import HTMLArraySerializer


class HTMLArray(views.APIView):
"""
An example of handling an array of fields posted from an HTML form:

<input type="text" name="foods[]" value="pizza" />
<input type="text" name="foods[]" value="sushi" />

"""
permission_classes = [permissions.AllowAny]
parser_classes = [FormParser, MultiPartParser]

def post(self, request, format=None):
data = request.data.copy()
data['foods'] = request.data.getlist('foods[]') # Must be converted to list, not QueryDict
serializer = HTMLArraySerializer(data)

# Here we're just returning the value for visibility, but you would normally use the
# serializer to insert into db.
return Response(serializer.data)
4 changes: 4 additions & 0 deletions project/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@
'apps.mail',
'apps.user',
'apps.workers',

# Examples
# !!! REMOVE ME IN PRODUCTION !!!
'apps.examples',
]

MIDDLEWARE = [
Expand Down
3 changes: 3 additions & 0 deletions project/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
path('', include('apps.file.urls')),
path('', include('apps.user.urls')),

# Examples
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add in this line here also

!!! REMOVE ME IN PRODUCTION !!!

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

then its simple delete directory and remove the two lines in production.

You also mentioned in code chat maybe adding a check for if env production post warning or something which I think is a good addition

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe add in this line here also

!!! REMOVE ME IN PRODUCTION !!!

path('', include('apps.examples.urls')),

# DRF API
path('api/', api_root, name='index'),
path('api-auth/', include('rest_framework.urls')),
Expand Down