Conver mixture of tabs/spaces => spaces

This commit is contained in:
Ryan P Kilby 2018-05-17 03:55:37 -04:00 committed by Carlton Gibson
parent 4ce571bb98
commit 703d9e99b0
9 changed files with 132 additions and 132 deletions

View File

@ -119,7 +119,7 @@ This would now be split out into two separate methods.
instance.save() instance.save()
return instance return instance
def create(self, validated_data): def create(self, validated_data):
return Snippet.objects.create(**validated_data) return Snippet.objects.create(**validated_data)
Note that these methods should return the newly created object instance. Note that these methods should return the newly created object instance.
@ -329,7 +329,7 @@ The `write_only_fields` option on `ModelSerializer` has been moved to `PendingDe
model = MyModel model = MyModel
fields = ('id', 'email', 'notes', 'is_admin') fields = ('id', 'email', 'notes', 'is_admin')
extra_kwargs = { extra_kwargs = {
'is_admin': {'write_only': True} 'is_admin': {'write_only': True}
} }
Alternatively, specify the field explicitly on the serializer class: Alternatively, specify the field explicitly on the serializer class:
@ -454,7 +454,7 @@ We can now use this class to serialize single `HighScore` instances:
def high_score(request, pk): def high_score(request, pk):
instance = HighScore.objects.get(pk=pk) instance = HighScore.objects.get(pk=pk)
serializer = HighScoreSerializer(instance) serializer = HighScoreSerializer(instance)
return Response(serializer.data) return Response(serializer.data)
Or use it to serialize multiple instances: Or use it to serialize multiple instances:
@ -462,7 +462,7 @@ Or use it to serialize multiple instances:
def all_high_scores(request): def all_high_scores(request):
queryset = HighScore.objects.order_by('-score') queryset = HighScore.objects.order_by('-score')
serializer = HighScoreSerializer(queryset, many=True) serializer = HighScoreSerializer(queryset, many=True)
return Response(serializer.data) return Response(serializer.data)
##### Read-write `BaseSerializer` classes. ##### Read-write `BaseSerializer` classes.
@ -493,8 +493,8 @@ Here's a complete example of our previous `HighScoreSerializer`, that's been upd
'player_name': 'May not be more than 10 characters.' 'player_name': 'May not be more than 10 characters.'
}) })
# Return the validated values. This will be available as # Return the validated values. This will be available as
# the `.validated_data` property. # the `.validated_data` property.
return { return {
'score': int(score), 'score': int(score),
'player_name': player_name 'player_name': player_name

View File

@ -83,7 +83,7 @@ When using `allow_null` with `ListField` or a nested `many=True` serializer the
For example, take the following field: For example, take the following field:
NestedSerializer(many=True, allow_null=True) NestedSerializer(many=True, allow_null=True)
Previously the validation behavior would be: Previously the validation behavior would be:
@ -110,4 +110,4 @@ This release is planned to include:
* Improvements and public API for our templated HTML forms and fields. * Improvements and public API for our templated HTML forms and fields.
* Nested object and list support in HTML forms. * Nested object and list support in HTML forms.
Thanks once again to all our sponsors and supporters. Thanks once again to all our sponsors and supporters.

View File

@ -55,4 +55,4 @@ The `ModelSerializer` and `HyperlinkedModelSerializer` classes should now includ
[forms-api]: html-and-forms.md [forms-api]: html-and-forms.md
[ajax-form]: https://github.com/encode/ajax-form [ajax-form]: https://github.com/encode/ajax-form
[jsonfield]: ../../api-guide/fields#jsonfield [jsonfield]: ../../api-guide/fields#jsonfield
[django-supported-versions]: https://www.djangoproject.com/download/#supported-versions [django-supported-versions]: https://www.djangoproject.com/download/#supported-versions

View File

@ -174,23 +174,23 @@ This subscription is recommended for individuals with an interest in seeing REST
If you are using REST framework as a full-time employee, consider recommending that your company takes out a [corporate plan](#corporate-plans). If you are using REST framework as a full-time employee, consider recommending that your company takes out a [corporate plan](#corporate-plans).
<div class="pricing"> <div class="pricing">
<div class="span4"> <div class="span4">
<div class="chart first"> <div class="chart first">
<div class="quantity"> <div class="quantity">
<span class="dollar">{{ symbol }}</span> <span class="dollar">{{ symbol }}</span>
<span class="price">{{ rates.personal1 }}</span> <span class="price">{{ rates.personal1 }}</span>
<span class="period">/month{% if vat %} +VAT{% endif %}</span> <span class="period">/month{% if vat %} +VAT{% endif %}</span>
</div> </div>
<div class="plan-name">Individual</div> <div class="plan-name">Individual</div>
<div class="specs freelancer"> <div class="specs freelancer">
<div class="spec"> <div class="spec">
Support ongoing development Support ongoing development
</div> </div>
<div class="spec"> <div class="spec">
Credited on the site Credited on the site
</div> </div>
</div> </div>
<form class="signup" action="/signup/{{ currency }}-{{ rates.personal1 }}/" method="POST"> <form class="signup" action="/signup/{{ currency }}-{{ rates.personal1 }}/" method="POST">
<script <script
src="https://checkout.stripe.com/checkout.js" class="stripe-button" src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ stripe_public }}" data-key="{{ stripe_public }}"
@ -204,9 +204,9 @@ If you are using REST framework as a full-time employee, consider recommending t
data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'>
</script> </script>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<div style="clear: both; padding-top: 50px"></div> <div style="clear: both; padding-top: 50px"></div>
*Billing is monthly and you can cancel at any time.* *Billing is monthly and you can cancel at any time.*
@ -222,23 +222,23 @@ In exchange for funding you'll also receive advertising space on our site, allow
Our professional and premium plans also include **priority support**. At any time your engineers can escalate an issue or discussion group thread, and we'll ensure it gets a guaranteed response within the next working day. Our professional and premium plans also include **priority support**. At any time your engineers can escalate an issue or discussion group thread, and we'll ensure it gets a guaranteed response within the next working day.
<div class="pricing"> <div class="pricing">
<div class="span4"> <div class="span4">
<div class="chart first"> <div class="chart first">
<div class="quantity"> <div class="quantity">
<span class="dollar">{{ symbol }}</span> <span class="dollar">{{ symbol }}</span>
<span class="price">{{ rates.corporate1 }}</span> <span class="price">{{ rates.corporate1 }}</span>
<span class="period">/month{% if vat %} +VAT{% endif %}</span> <span class="period">/month{% if vat %} +VAT{% endif %}</span>
</div> </div>
<div class="plan-name">Basic</div> <div class="plan-name">Basic</div>
<div class="specs startup"> <div class="specs startup">
<div class="spec"> <div class="spec">
Support ongoing development Support ongoing development
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Funding page</span> ad placement <span class="variable">Funding page</span> ad placement
</div> </div>
</div> </div>
<form class="signup" action="/signup/{{ currency }}-{{ rates.corporate1 }}/" method="POST"> <form class="signup" action="/signup/{{ currency }}-{{ rates.corporate1 }}/" method="POST">
<script <script
src="https://checkout.stripe.com/checkout.js" class="stripe-button" src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ stripe_public }}" data-key="{{ stripe_public }}"
@ -252,28 +252,28 @@ Our professional and premium plans also include **priority support**. At any tim
data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'>
</script> </script>
</form> </form>
</div> </div>
</div> </div>
<div class="span4"> <div class="span4">
<div class="chart"> <div class="chart">
<div class="quantity"> <div class="quantity">
<span class="dollar">{{ symbol }}</span> <span class="dollar">{{ symbol }}</span>
<span class="price">{{ rates.corporate2 }}</span> <span class="price">{{ rates.corporate2 }}</span>
<span class="period">/month{% if vat %} +VAT{% endif %}</span> <span class="period">/month{% if vat %} +VAT{% endif %}</span>
</div> </div>
<div class="plan-name">Professional</div> <div class="plan-name">Professional</div>
<div class="specs"> <div class="specs">
<div class="spec"> <div class="spec">
Support ongoing development Support ongoing development
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Sidebar</span> ad placement <span class="variable">Sidebar</span> ad placement
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Priority support</span> for your engineers <span class="variable">Priority support</span> for your engineers
</div> </div>
</div> </div>
<form class="signup" action="/signup/{{ currency }}-{{ rates.corporate2 }}/" method="POST"> <form class="signup" action="/signup/{{ currency }}-{{ rates.corporate2 }}/" method="POST">
<script <script
src="https://checkout.stripe.com/checkout.js" class="stripe-button" src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ stripe_public }}" data-key="{{ stripe_public }}"
@ -287,31 +287,31 @@ Our professional and premium plans also include **priority support**. At any tim
data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'>
</script> </script>
</form> </form>
</div> </div>
</div> </div>
<div class="span4"> <div class="span4">
<div class="chart last"> <div class="chart last">
<div class="quantity"> <div class="quantity">
<span class="dollar">{{ symbol }}</span> <span class="dollar">{{ symbol }}</span>
<span class="price">{{ rates.corporate3 }}</span> <span class="price">{{ rates.corporate3 }}</span>
<span class="period">/month{% if vat %} +VAT{% endif %}</span> <span class="period">/month{% if vat %} +VAT{% endif %}</span>
</div> </div>
<div class="plan-name">Premium</div> <div class="plan-name">Premium</div>
<div class="specs"> <div class="specs">
<div class="spec"> <div class="spec">
Support ongoing development Support ongoing development
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Homepage</span> ad placement <span class="variable">Homepage</span> ad placement
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Sidebar</span> ad placement <span class="variable">Sidebar</span> ad placement
</div> </div>
<div class="spec"> <div class="spec">
<span class="variable">Priority support</span> for your engineers <span class="variable">Priority support</span> for your engineers
</div> </div>
</div> </div>
<form class="signup" action="/signup/{{ currency }}-{{ rates.corporate3 }}/" method="POST"> <form class="signup" action="/signup/{{ currency }}-{{ rates.corporate3 }}/" method="POST">
<script <script
src="https://checkout.stripe.com/checkout.js" class="stripe-button" src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ stripe_public }}" data-key="{{ stripe_public }}"
@ -325,9 +325,9 @@ Our professional and premium plans also include **priority support**. At any tim
data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'> data-panel-label='Sign up - {% verbatim %}{{amount}}{% endverbatim %}/mo'>
</script> </script>
</form> </form>
</div> </div>
</div> </div>
</div> </div>
<div style="clear: both; padding-top: 50px"></div> <div style="clear: both; padding-top: 50px"></div>
@ -346,22 +346,22 @@ In an effort to keep the project as transparent as possible, we are releasing [m
<!-- Begin MailChimp Signup Form --> <!-- Begin MailChimp Signup Form -->
<link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css"> <link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css">
<style type="text/css"> <style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block. /* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style> </style>
<div id="mc_embed_signup"> <div id="mc_embed_signup">
<form action="//encode.us13.list-manage.com/subscribe/post?u=b6b66bb5e4c7cb484a85c8dd7&amp;id=e382ef68ef" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <form action="//encode.us13.list-manage.com/subscribe/post?u=b6b66bb5e4c7cb484a85c8dd7&amp;id=e382ef68ef" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll"> <div id="mc_embed_signup_scroll">
<h2>Stay up to date, with our monthly progress reports...</h2> <h2>Stay up to date, with our monthly progress reports...</h2>
<div class="mc-field-group"> <div class="mc-field-group">
<label for="mce-EMAIL">Email Address </label> <label for="mce-EMAIL">Email Address </label>
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"> <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
</div> </div>
<div id="mce-responses" class="clear"> <div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-error-response" style="display:none"></div>
<div class="response" id="mce-success-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div>
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_b6b66bb5e4c7cb484a85c8dd7_e382ef68ef" tabindex="-1" value=""></div> <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_b6b66bb5e4c7cb484a85c8dd7_e382ef68ef" tabindex="-1" value=""></div>
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div> <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</div> </div>

View File

@ -42,22 +42,22 @@ funded via the [REST framework paid plans](funding.md).
<!-- Begin MailChimp Signup Form --> <!-- Begin MailChimp Signup Form -->
<link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css"> <link href="//cdn-images.mailchimp.com/embedcode/classic-10_7.css" rel="stylesheet" type="text/css">
<style type="text/css"> <style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; } #mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; }
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block. /* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */ We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style> </style>
<div id="mc_embed_signup"> <div id="mc_embed_signup">
<form action="//encode.us13.list-manage.com/subscribe/post?u=b6b66bb5e4c7cb484a85c8dd7&amp;id=e382ef68ef" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate> <form action="//encode.us13.list-manage.com/subscribe/post?u=b6b66bb5e4c7cb484a85c8dd7&amp;id=e382ef68ef" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<div id="mc_embed_signup_scroll"> <div id="mc_embed_signup_scroll">
<h2>Stay up to date, with our monthly progress reports...</h2> <h2>Stay up to date, with our monthly progress reports...</h2>
<div class="mc-field-group"> <div class="mc-field-group">
<label for="mce-EMAIL">Email Address </label> <label for="mce-EMAIL">Email Address </label>
<input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL"> <input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL">
</div> </div>
<div id="mce-responses" class="clear"> <div id="mce-responses" class="clear">
<div class="response" id="mce-error-response" style="display:none"></div> <div class="response" id="mce-error-response" style="display:none"></div>
<div class="response" id="mce-success-response" style="display:none"></div> <div class="response" id="mce-success-response" style="display:none"></div>
</div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups--> </div> <!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_b6b66bb5e4c7cb484a85c8dd7_e382ef68ef" tabindex="-1" value=""></div> <div style="position: absolute; left: -5000px;" aria-hidden="true"><input type="text" name="b_b6b66bb5e4c7cb484a85c8dd7_e382ef68ef" tabindex="-1" value=""></div>
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div> <div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</div> </div>

View File

@ -147,11 +147,11 @@ Here's our project's root `urls.py` module:
from django.contrib.auth.models import User from django.contrib.auth.models import User
from rest_framework import routers, serializers, viewsets from rest_framework import routers, serializers, viewsets
# Serializers define the API representation. # Serializers define the API representation.
class UserSerializer(serializers.HyperlinkedModelSerializer): class UserSerializer(serializers.HyperlinkedModelSerializer):
class Meta: class Meta:
model = User model = User
fields = ('url', 'username', 'email', 'is_staff') fields = ('url', 'username', 'email', 'is_staff')
# ViewSets define the view behavior. # ViewSets define the view behavior.
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):

View File

@ -12,17 +12,17 @@ Nested data structures are easy enough to work with if they're read-only - simpl
*Example of a **read-only** nested serializer. Nothing complex to worry about here.* *Example of a **read-only** nested serializer. Nothing complex to worry about here.*
class ToDoItemSerializer(serializers.ModelSerializer): class ToDoItemSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = ToDoItem model = ToDoItem
fields = ('text', 'is_completed') fields = ('text', 'is_completed')
class ToDoListSerializer(serializers.ModelSerializer): class ToDoListSerializer(serializers.ModelSerializer):
items = ToDoItemSerializer(many=True, read_only=True) items = ToDoItemSerializer(many=True, read_only=True)
class Meta: class Meta:
model = ToDoList model = ToDoList
fields = ('title', 'items') fields = ('title', 'items')
Some example output from our serializer. Some example output from our serializer.

View File

@ -299,18 +299,18 @@ Now we can start up a sample server that serves our snippets.
Quit out of the shell... Quit out of the shell...
quit() quit()
...and start up Django's development server. ...and start up Django's development server.
python manage.py runserver python manage.py runserver
Validating models... Validating models...
0 errors found 0 errors found
Django version 1.11, using settings 'tutorial.settings' Django version 1.11, using settings 'tutorial.settings'
Development server is running at http://127.0.0.1:8000/ Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C. Quit the server with CONTROL-C.
In another terminal window, we can test the server. In another terminal window, we can test the server.

View File

@ -83,7 +83,7 @@ We'll also add a couple of views to `views.py`. We'd like to just use read-only
Make sure to also import the `UserSerializer` class Make sure to also import the `UserSerializer` class
from snippets.serializers import UserSerializer from snippets.serializers import UserSerializer
Finally we need to add those views into the API, by referencing them from the URL conf. Add the following to the patterns in `snippets/urls.py`. Finally we need to add those views into the API, by referencing them from the URL conf. Add the following to the patterns in `snippets/urls.py`.