mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 01:26:53 +03:00
Urg, force update after hg-git ickyness
This commit is contained in:
parent
2ebcc9d3dd
commit
c4fe5a920b
23
.gitignore
vendored
Normal file
23
.gitignore
vendored
Normal file
|
@ -0,0 +1,23 @@
|
|||
*.pyc
|
||||
*.db
|
||||
assetplatform.egg-info/*
|
||||
*~
|
||||
coverage.xml
|
||||
env
|
||||
docs/build
|
||||
html
|
||||
htmlcov
|
||||
examples/media/pygments/[A-Za-z0-9]*
|
||||
examples/media/objectstore/[A-Za-z0-9]*
|
||||
build/*
|
||||
dist/*
|
||||
xmlrunner/*
|
||||
djangorestframework.egg-info/*
|
||||
MANIFEST
|
||||
.project
|
||||
.pydevproject
|
||||
.settings
|
||||
.cache
|
||||
.coverage
|
||||
.tox
|
||||
.DS_Store
|
1
AUTHORS
1
AUTHORS
|
@ -9,6 +9,7 @@ Carles Barrobés <txels> - HEAD support.
|
|||
Michael Fötsch <mfoetsch> - File format support.
|
||||
David Larlet <david> - OAuth support.
|
||||
Andrew Straw <astraw> - Bugfixes.
|
||||
<zeth> - Bugfixes.
|
||||
|
||||
THANKS TO:
|
||||
|
||||
|
|
99
README
99
README
|
@ -1,99 +0,0 @@
|
|||
General Notes
|
||||
-------------
|
||||
|
||||
To install django-rest-framework in a virtualenv environment
|
||||
|
||||
hg clone https://tomchristie@bitbucket.org/tomchristie/django-rest-framework
|
||||
cd django-rest-framework/
|
||||
virtualenv --no-site-packages --distribute --python=python2.6 env
|
||||
source ./env/bin/activate
|
||||
pip install -r requirements.txt # django, coverage
|
||||
|
||||
|
||||
To run the tests
|
||||
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runtests.py
|
||||
|
||||
|
||||
To run the test coverage report
|
||||
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runcoverage.py
|
||||
|
||||
|
||||
To run the examples
|
||||
|
||||
pip install -r examples/requirements.txt # pygments, httplib2, markdown
|
||||
cd examples
|
||||
export PYTHONPATH=..
|
||||
python manage.py syncdb
|
||||
python manage.py runserver
|
||||
|
||||
|
||||
To build the documentation
|
||||
|
||||
pip install -r docs/requirements.txt # sphinx
|
||||
sphinx-build -c docs -b html -d docs/build docs html
|
||||
|
||||
|
||||
To run the tests against the full set of supported configurations
|
||||
|
||||
deactivate # Ensure we are not currently running in a virtualenv
|
||||
tox
|
||||
|
||||
|
||||
To create the sdist packages
|
||||
|
||||
python setup.py sdist --formats=gztar,zip
|
||||
|
||||
|
||||
|
||||
Release Notes
|
||||
=============
|
||||
|
||||
0.2.3
|
||||
|
||||
* Fix some throttling bugs
|
||||
* X-Throttle header on throttling
|
||||
* Support for nesting resources on related models
|
||||
|
||||
0.2.2
|
||||
|
||||
* Throttling support complete
|
||||
|
||||
0.2.1
|
||||
|
||||
* Couple of simple bugfixes over 0.2.0
|
||||
|
||||
0.2.0
|
||||
|
||||
* Big refactoring changes since 0.1.0, ask on the discussion group if anything isn't clear.
|
||||
The public API has been massively cleaned up. Expect it to be fairly stable from here on in.
|
||||
|
||||
* `Resource` becomes decoupled into `View` and `Resource`, your views should now inherit from `View`, not `Resource`.
|
||||
|
||||
* The handler functions on views .get() .put() .post() etc, no longer have the `content` and `auth` args.
|
||||
Use `self.CONTENT` inside a view to access the deserialized, validated content.
|
||||
Use `self.user` inside a view to access the authenticated user.
|
||||
|
||||
* `allowed_methods` and `anon_allowed_methods` are now defunct. if a method is defined, it's available.
|
||||
The `permissions` attribute on a `View` is now used to provide generic permissions checking.
|
||||
Use permission classes such as `FullAnonAccess`, `IsAuthenticated` or `IsUserOrIsAnonReadOnly` to set the permissions.
|
||||
|
||||
* The `authenticators` class becomes `authentication`. Class names change to Authentication.
|
||||
|
||||
* The `emitters` class becomes `renderers`. Class names change to Renderers.
|
||||
|
||||
* `ResponseException` becomes `ErrorResponse`.
|
||||
|
||||
* The mixin classes have been nicely refactored, the basic mixins are now `RequestMixin`, `ResponseMixin`, `AuthMixin`, and `ResourceMixin`
|
||||
You can reuse these mixin classes individually without using the `View` class.
|
||||
|
||||
0.1.1
|
||||
|
||||
* Final build before pulling in all the refactoring changes for 0.2, in case anyone needs to hang on to 0.1.
|
||||
|
||||
0.1.0
|
||||
|
||||
* Initial release.
|
120
README.rst
Normal file
120
README.rst
Normal file
|
@ -0,0 +1,120 @@
|
|||
Django REST framework
|
||||
=====================
|
||||
|
||||
Django REST framework makes it easy to build well-connected, self-describing RESTful Web APIs.
|
||||
|
||||
Full documentation for the project is available at http://django-rest-framework.org
|
||||
|
||||
Issue tracking is on `GitHub <https://github.com/tomchristie/django-rest-framework/issues>`_.
|
||||
General questions should be taken to the `discussion group <http://groups.google.com/group/django-rest-framework>`_.
|
||||
|
||||
|
||||
|
||||
Installation Notes
|
||||
==================
|
||||
|
||||
To clone the project from GitHub using git::
|
||||
|
||||
git clone git@github.com:tomchristie/django-rest-framework.git
|
||||
|
||||
|
||||
To clone the project from Bitbucket using mercurial::
|
||||
|
||||
hg clone https://tomchristie@bitbucket.org/tomchristie/django-rest-framework
|
||||
|
||||
|
||||
To install django-rest-framework in a virtualenv environment::
|
||||
|
||||
cd django-rest-framework
|
||||
virtualenv --no-site-packages --distribute --python=python2.6 env
|
||||
source env/bin/activate
|
||||
pip install -r requirements.txt # django, coverage
|
||||
|
||||
|
||||
To run the tests::
|
||||
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runtests.py
|
||||
|
||||
|
||||
To run the test coverage report::
|
||||
|
||||
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
|
||||
python djangorestframework/runtests/runcoverage.py
|
||||
|
||||
|
||||
To run the examples::
|
||||
|
||||
pip install -r examples/requirements.txt # pygments, httplib2, markdown
|
||||
cd examples
|
||||
export PYTHONPATH=..
|
||||
python manage.py syncdb
|
||||
python manage.py runserver
|
||||
|
||||
|
||||
To build the documentation::
|
||||
|
||||
pip install -r docs/requirements.txt # sphinx
|
||||
sphinx-build -c docs -b html -d docs/build docs html
|
||||
|
||||
|
||||
To run the tests against the full set of supported configurations::
|
||||
|
||||
deactivate # Ensure we are not currently running in a virtualenv
|
||||
tox
|
||||
|
||||
|
||||
To create the sdist packages::
|
||||
|
||||
python setup.py sdist --formats=gztar,zip
|
||||
|
||||
|
||||
|
||||
Release Notes
|
||||
=============
|
||||
|
||||
0.2.3
|
||||
|
||||
* Fix some throttling bugs.
|
||||
* X-Throttle header on throttling.
|
||||
* Support for nesting resources on related models.
|
||||
|
||||
0.2.2
|
||||
|
||||
* Throttling support complete.
|
||||
|
||||
0.2.1
|
||||
|
||||
* Couple of simple bugfixes over 0.2.0
|
||||
|
||||
0.2.0
|
||||
|
||||
* Big refactoring changes since 0.1.0, ask on the discussion group if anything isn't clear.
|
||||
The public API has been massively cleaned up. Expect it to be fairly stable from here on in.
|
||||
|
||||
* `Resource` becomes decoupled into `View` and `Resource`, your views should now inherit from `View`, not `Resource`.
|
||||
|
||||
* The handler functions on views .get() .put() .post() etc, no longer have the `content` and `auth` args.
|
||||
Use `self.CONTENT` inside a view to access the deserialized, validated content.
|
||||
Use `self.user` inside a view to access the authenticated user.
|
||||
|
||||
* `allowed_methods` and `anon_allowed_methods` are now defunct. if a method is defined, it's available.
|
||||
The `permissions` attribute on a `View` is now used to provide generic permissions checking.
|
||||
Use permission classes such as `FullAnonAccess`, `IsAuthenticated` or `IsUserOrIsAnonReadOnly` to set the permissions.
|
||||
|
||||
* The `authenticators` class becomes `authentication`. Class names change to Authentication.
|
||||
|
||||
* The `emitters` class becomes `renderers`. Class names change to Renderers.
|
||||
|
||||
* `ResponseException` becomes `ErrorResponse`.
|
||||
|
||||
* The mixin classes have been nicely refactored, the basic mixins are now `RequestMixin`, `ResponseMixin`, `AuthMixin`, and `ResourceMixin`
|
||||
You can reuse these mixin classes individually without using the `View` class.
|
||||
|
||||
0.1.1
|
||||
|
||||
* Final build before pulling in all the refactoring changes for 0.2, in case anyone needs to hang on to 0.1.
|
||||
|
||||
0.1.0
|
||||
|
||||
* Initial release.
|
|
@ -4,7 +4,7 @@ Customizable serialization.
|
|||
from django.db import models
|
||||
from django.db.models.query import QuerySet
|
||||
from django.db.models.fields.related import RelatedField
|
||||
from django.utils.encoding import smart_unicode, is_protected_type
|
||||
from django.utils.encoding import smart_unicode, is_protected_type, smart_str
|
||||
|
||||
import decimal
|
||||
import inspect
|
||||
|
@ -177,7 +177,7 @@ class Serializer(object):
|
|||
Keys serialize to their string value,
|
||||
unless they exist in the `rename` dict.
|
||||
"""
|
||||
return getattr(self.rename, key, key)
|
||||
return getattr(self.rename, smart_str(key), smart_str(key))
|
||||
|
||||
|
||||
def serialize_val(self, key, obj):
|
||||
|
@ -228,12 +228,12 @@ class Serializer(object):
|
|||
|
||||
# serialize each required field
|
||||
for fname in fields:
|
||||
if hasattr(self, fname):
|
||||
if hasattr(self, smart_str(fname)):
|
||||
# check for a method 'fname' on self first
|
||||
meth = getattr(self, fname)
|
||||
if inspect.ismethod(meth) and len(inspect.getargspec(meth)[0]) == 2:
|
||||
obj = meth(instance)
|
||||
elif hasattr(instance, fname):
|
||||
elif hasattr(instance, smart_str(fname)):
|
||||
# now check for an attribute 'fname' on the instance
|
||||
obj = getattr(instance, fname)
|
||||
elif fname in instance:
|
||||
|
|
Loading…
Reference in New Issue
Block a user