Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
c4fe5a92
Commit
c4fe5a92
authored
Jul 01, 2011
by
Tom Christie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Urg, force update after hg-git ickyness
parent
2ebcc9d3
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
82 additions
and
37 deletions
+82
-37
.gitignore
+23
-0
AUTHORS
+1
-0
README.rst
+54
-33
djangorestframework/serializer.py
+4
-4
No files found.
.gitignore
0 → 100644
View file @
c4fe5a92
*.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
AUTHORS
View file @
c4fe5a92
...
...
@@ -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:
...
...
README
→
README
.rst
View file @
c4fe5a92
General Notes
-------------
Django REST framework
=====================
To install django-rest-framework in a virtualenv environment
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
cd 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
source env/bin/activate
pip install -r requirements.txt # django, coverage
To run the tests
To run the tests
::
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
python djangorestframework/runtests/runtests.py
To run the test coverage report
To run the test coverage report
::
export PYTHONPATH=. # Ensure djangorestframework is on the PYTHONPATH
python djangorestframework/runtests/runcoverage.py
To run the examples
To run the examples
::
pip install -r examples/requirements.txt # pygments, httplib2, markdown
cd examples
...
...
@@ -31,19 +52,19 @@ To run the examples
python manage.py runserver
To build the documentation
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
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
To create the sdist packages
::
python setup.py sdist --formats=gztar,zip
...
...
@@ -54,46 +75,46 @@ Release Notes
0.2.3
* Fix some throttling bugs
* X-Throttle header on throttling
* Support for nesting resources on related models
* Fix some throttling bugs.
* X-Throttle header on throttling.
* Support for nesting resources on related models.
0.2.2
* Throttling support complete
* Throttling support complete.
0.2.1
* Couple of simple bugfixes over 0.2.0
* 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.
* 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`.
* `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.
* 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.
* `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 `authenticators` class becomes `authentication`. Class names change to Authentication.
* The `emitters` class becomes `renderers`. Class names change to Renderers.
* The `emitters` class becomes `renderers`. Class names change to Renderers.
* `ResponseException` becomes `ErrorResponse`.
* `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.
* 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.
* 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.
\ No newline at end of file
* Initial release.
\ No newline at end of file
djangorestframework/serializer.py
View file @
c4fe5a92
...
...
@@ -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
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment