{"id":28559128,"url":"https://github.com/toastdriven/multiresponse","last_synced_at":"2025-06-10T08:36:16.981Z","repository":{"id":459400,"uuid":"83471","full_name":"toastdriven/multiresponse","owner":"toastdriven","description":"A Python class for Django that allows a request to provide content-type aware responses.","archived":false,"fork":false,"pushed_at":"2008-12-02T06:52:37.000Z","size":84,"stargazers_count":45,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-06-07T16:54:57.451Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/toastdriven.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2008-12-02T04:17:20.000Z","updated_at":"2025-03-20T12:50:38.000Z","dependencies_parsed_at":"2022-07-17T00:00:41.951Z","dependency_job_id":null,"html_url":"https://github.com/toastdriven/multiresponse","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Fmultiresponse","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Fmultiresponse/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Fmultiresponse/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Fmultiresponse/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/toastdriven","download_url":"https://codeload.github.com/toastdriven/multiresponse/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/toastdriven%2Fmultiresponse/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259039632,"owners_count":22796879,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T08:36:07.595Z","updated_at":"2025-06-10T08:36:16.923Z","avatar_url":"https://github.com/toastdriven.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"MultiResponse\n=============\n\nA Python class for Django to provide mime type aware responses. This allows a client to receive different responses based on the HTTP \"Accept\" header they send. This is used in place of ``render_to_response`` or a manual ``HttpResponse``.\n\n\nRequirements\n------------\n\n  * Python 2.5+ (lower versions may work but are untested.)\n  * Django 1.0+ (again, lower versions may work but are untested.)\n  * mimeparse 0.1.2+ - http://code.google.com/p/mimeparse/\n\n\nSample Usage:\n-------------\n\n  from django.conf import settings\n  from django.shortcuts import render_to_response\n  from multiresponse import MultiResponse\n\n  def index(request, extension):\n      sample_people = [\n          {'name': 'Daniel', 'age': 26},\n          {'name': 'John', 'age': 26},\n          {'name': 'Jane', 'age': 20},\n          {'name': 'Bob', 'age': 35},\n      ]\n\n      mr = MultiResponse(request)\n      mr.register('html', 'index.html')\n      mr.register('xml', 'people.xml')\n      mr.register('json', 'people.json')\n      mr.register('txt', 'people.txt')\n      return mr.render({\n          'people': sample_people,\n      })\n\n\nOutput\n------\n\nA HTTP GET to http://localhost:8000/ with a web browser would yield something like:\n\n  HTTP/1.0 200 OK\n  Date: Tue, 02 Dec 2008 05:39:53 GMT\n  Server: WSGIServer/0.1 Python/2.5.1\n  Content-Type: text/html; charset=utf-8\n  \n  \u003chtml\u003e\n      \u003chead\u003e\n          \u003ctitle\u003ePeople\u003c/title\u003e\n      \u003c/head\u003e\n      \n      \u003cbody\u003e\n          \u003ch1\u003ePeople\u003c/h1\u003e\n          \n          \u003cul\u003e\n              \n                  \u003cli\u003eDaniel\u003c/li\u003e\n              \n                  \u003cli\u003eJohn\u003c/li\u003e\n              \n                  \u003cli\u003eJane\u003c/li\u003e\n              \n                  \u003cli\u003eBob\u003c/li\u003e\n              \n          \u003c/ul\u003e\n      \u003c/body\u003e\n  \u003c/html\u003e\n\nHowever, a HTTP GET to http://localhost:8000/ via \"curl -i -H 'Accept: application/xml' http://localhost:8000/\" would yield:\n\n  HTTP/1.0 200 OK\n  Date: Tue, 02 Dec 2008 05:42:14 GMT\n  Server: WSGIServer/0.1 Python/2.5.1\n  Content-Type: application/xml; charset=utf-8\n\n  \u003c?xml version=\"1.0\"?\u003e\n  \u003cpeople\u003e\n\n          \u003cperson\u003e\n              \u003cname\u003eDaniel\u003c/name\u003e\n              \u003cage\u003e26\u003c/age\u003e\n          \u003c/person\u003e\n\n          \u003cperson\u003e\n              \u003cname\u003eJohn\u003c/name\u003e\n              \u003cage\u003e26\u003c/age\u003e\n          \u003c/person\u003e\n\n          \u003cperson\u003e\n              \u003cname\u003eJane\u003c/name\u003e\n              \u003cage\u003e20\u003c/age\u003e\n          \u003c/person\u003e\n\n          \u003cperson\u003e\n              \u003cname\u003eBob\u003c/name\u003e\n              \u003cage\u003e35\u003c/age\u003e\n          \u003c/person\u003e\n\n  \u003c/people\u003e\n\nAnd a HTTP GET to http://localhost:8000/ via Javascript might look like:\n\n  HTTP/1.0 200 OK\n  Date: Tue, 02 Dec 2008 05:42:47 GMT\n  Server: WSGIServer/0.1 Python/2.5.1\n  Content-Type: application/json; charset=utf-8\n\n  {\n      'people': [\n\n              {'name': 'Daniel', 'age': '26'},\n\n              {'name': 'John', 'age': '26'},\n\n              {'name': 'Jane', 'age': '20'},\n\n              {'name': 'Bob', 'age': '35'},\n\n      ]\n  }\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoastdriven%2Fmultiresponse","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftoastdriven%2Fmultiresponse","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftoastdriven%2Fmultiresponse/lists"}