diff options
| -rw-r--r-- | docs/templates/layout.html | 15 | ||||
| -rw-r--r-- | examples/modelresourceexample/__init__.py (renamed from examples/simpleexample/__init__.py) | 0 | ||||
| -rw-r--r-- | examples/modelresourceexample/models.py (renamed from examples/simpleexample/models.py) | 2 | ||||
| -rw-r--r-- | examples/modelresourceexample/urls.py (renamed from examples/simpleexample/urls.py) | 2 | ||||
| -rw-r--r-- | examples/modelresourceexample/views.py (renamed from examples/simpleexample/views.py) | 2 | ||||
| -rw-r--r-- | examples/resourceexample/__init__.py | 0 | ||||
| -rw-r--r-- | examples/resourceexample/urls.py | 6 | ||||
| -rw-r--r-- | examples/resourceexample/views.py | 35 | ||||
| -rw-r--r-- | examples/settings.py | 4 | ||||
| -rw-r--r-- | examples/urls.py | 20 |
10 files changed, 77 insertions, 9 deletions
diff --git a/docs/templates/layout.html b/docs/templates/layout.html index 86ac3f33..6ba9e6ff 100644 --- a/docs/templates/layout.html +++ b/docs/templates/layout.html @@ -8,4 +8,19 @@ {% block htmltitle %}<title>{% if pagename == 'index' %}Django REST framework{% else %}{{ titleprefix }}{{ title|striptags|e }}{% endif %}</title>{% endblock %} +{% block extrahead %} +{{ super() }} +<script type="text/javascript"> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-18852272-2']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + +</script> +{% endblock %} diff --git a/examples/simpleexample/__init__.py b/examples/modelresourceexample/__init__.py index e69de29b..e69de29b 100644 --- a/examples/simpleexample/__init__.py +++ b/examples/modelresourceexample/__init__.py diff --git a/examples/simpleexample/models.py b/examples/modelresourceexample/models.py index b628f895..036501d0 100644 --- a/examples/simpleexample/models.py +++ b/examples/modelresourceexample/models.py @@ -19,5 +19,5 @@ class MyModel(models.Model): @models.permalink def get_absolute_url(self): - return ('simpleexample.views.MyModelResource', (self.pk,)) + return ('modelresourceexample.views.MyModelResource', (self.pk,)) diff --git a/examples/simpleexample/urls.py b/examples/modelresourceexample/urls.py index 92e782dc..c43cf56a 100644 --- a/examples/simpleexample/urls.py +++ b/examples/modelresourceexample/urls.py @@ -1,6 +1,6 @@ from django.conf.urls.defaults import patterns, url -urlpatterns = patterns('simpleexample.views', +urlpatterns = patterns('modelresourceexample.views', url(r'^$', 'MyModelRootResource'), url(r'^([0-9]+)/$', 'MyModelResource'), ) diff --git a/examples/simpleexample/views.py b/examples/modelresourceexample/views.py index 1f113ac2..e912c019 100644 --- a/examples/simpleexample/views.py +++ b/examples/modelresourceexample/views.py @@ -1,5 +1,5 @@ from djangorestframework.modelresource import ModelResource, RootModelResource -from simpleexample.models import MyModel +from modelresourceexample.models import MyModel FIELDS = ('foo', 'bar', 'baz', 'absolute_url') diff --git a/examples/resourceexample/__init__.py b/examples/resourceexample/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/examples/resourceexample/__init__.py diff --git a/examples/resourceexample/urls.py b/examples/resourceexample/urls.py new file mode 100644 index 00000000..01cc7c62 --- /dev/null +++ b/examples/resourceexample/urls.py @@ -0,0 +1,6 @@ +from django.conf.urls.defaults import patterns, url + +urlpatterns = patterns('resourceexample.views', + url(r'^$', 'ExampleResource'), + url(r'^(?P<num>[0-9]+)/$', 'AnotherExampleResource'), +) diff --git a/examples/resourceexample/views.py b/examples/resourceexample/views.py new file mode 100644 index 00000000..650a8e39 --- /dev/null +++ b/examples/resourceexample/views.py @@ -0,0 +1,35 @@ +from django import forms +from djangorestframework.resource import Resource +from djangorestframework.response import Response, status + + +class MyForm(forms.Form): + foo = forms.BooleanField() + bar = forms.IntegerField(help_text='Must be an integer.') + baz = forms.CharField(max_length=32, help_text='Free text. Max length 32 chars.') + + +class ExampleResource(Resource): + """A basic read only resource that points to 3 other resources.""" + allowed_methods = anon_allowed_methods = ('GET',) + + def get(self, request, auth): + return {"Some other resources": [self.reverse(AnotherExampleResource, num=num) for num in range(3)]} + + +class AnotherExampleResource(Resource): + """A basic GET-able/POST-able resource.""" + allowed_methods = anon_allowed_methods = ('GET', 'POST') + form = MyForm # Optional form validation on input + + def get(self, request, auth, num): + """Handle GET requests""" + if int(num) > 2: + return Response(status.HTTP_404_NOT_FOUND) + return "GET request to AnotherExampleResource %s" % num + + def post(self, request, auth, content, num): + """Handle POST requests""" + if int(num) > 2: + return Response(status.HTTP_404_NOT_FOUND) + return "POST request to AnotherExampleResource %s, with content: %s" % (num, repr(content)) diff --git a/examples/settings.py b/examples/settings.py index 4aa5dd00..865dc394 100644 --- a/examples/settings.py +++ b/examples/settings.py @@ -95,7 +95,9 @@ INSTALLED_APPS = ( 'django.contrib.messages', #'django.contrib.admin', 'djangorestframework', - 'simpleexample', + + 'resourceexample', + 'modelresourceexample', 'objectstore', 'pygments_api', 'blogpost', diff --git a/examples/urls.py b/examples/urls.py index 2b8e6fcd..41b80d58 100644 --- a/examples/urls.py +++ b/examples/urls.py @@ -5,18 +5,28 @@ from djangorestframework.resource import Resource #admin.autodiscover() class RootResource(Resource): + """This is the sandbox for the examples provided with django-rest-framework. + + These examples are here to help you get a better idea of the some of the + features of django-rest-framework API, such as automatic form and model validation, + support for multiple input and output media types, etc... + + Please feel free to browse, create, edit and delete the resources here, either + in the browser, from the command line, or programmatically.""" allowed_methods = anon_allowed_methods = ('GET',) def get(self, request, auth): - return {'simple example': self.reverse('simpleexample.views.MyModelRootResource'), - 'pygments example': self.reverse('pygments_api.views.PygmentsRoot'), - 'object store example': self.reverse('objectstore.views.ObjectStoreRoot'), - 'blog post example': self.reverse('blogpost.views.BlogPostRoot'),} + return {'Simple Resource example': self.reverse('resourceexample.views.ExampleResource'), + 'Simple ModelResource example': self.reverse('modelresourceexample.views.MyModelRootResource'), + 'Object store API (Resource)': self.reverse('objectstore.views.ObjectStoreRoot'), + 'A pygments pastebin API (Resource + forms)': self.reverse('pygments_api.views.PygmentsRoot'), + 'Blog posts API (ModelResource)': self.reverse('blogpost.views.BlogPostRoot'),} urlpatterns = patterns('', (r'^$', RootResource), - (r'^simple-example/', include('simpleexample.urls')), + (r'^model-resource-example/', include('modelresourceexample.urls')), + (r'^resource-example/', include('resourceexample.urls')), (r'^object-store/', include('objectstore.urls')), (r'^pygments/', include('pygments_api.urls')), (r'^blog-post/', include('blogpost.urls')), |
