{"id":16032545,"url":"https://github.com/steder/txtemplate","last_synced_at":"2025-03-18T03:32:32.009Z","repository":{"id":2381088,"uuid":"3346425","full_name":"steder/txtemplate","owner":"steder","description":"Twisted wrapper for common template systems","archived":false,"fork":false,"pushed_at":"2020-03-25T16:00:58.000Z","size":34,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-28T06:55:02.524Z","etag":null,"topics":["python","template","twisted"],"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/steder.png","metadata":{"files":{"readme":"README.rst","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":"2012-02-03T17:21:25.000Z","updated_at":"2018-12-07T20:43:37.000Z","dependencies_parsed_at":"2022-09-07T09:00:14.132Z","dependency_job_id":null,"html_url":"https://github.com/steder/txtemplate","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/steder%2Ftxtemplate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steder%2Ftxtemplate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steder%2Ftxtemplate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steder%2Ftxtemplate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steder","download_url":"https://codeload.github.com/steder/txtemplate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243902241,"owners_count":20366257,"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":["python","template","twisted"],"created_at":"2024-10-08T21:23:05.602Z","updated_at":"2025-03-18T03:32:31.703Z","avatar_url":"https://github.com/steder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"=================================\ntxTemplate\n=================================\n\n.. image:: https://travis-ci.org/steder/txtemplate.svg?branch=master\n    :target: https://travis-ci.org/steder/txtemplate\n\ntxTemplate provides adapters for a few popular template engines\nto make them easily callable and usable within Twisted Web.\n\ntxTemplate uses zope.interface to provide a consistent\nloader and template interface for every template engine.\n\n------------------------------------------\nSupported Template Engines\n------------------------------------------\n\n - ClearSilver\n - Genshi\n - Jinja2\n\n------------------------------------------\nGetting Started\n------------------------------------------\n\nAll you really need to do to use txTemplate in twisted is:\n - import it\n - create a loader pointed at your template directory\n - load a template with said loader\n - call template.render, attach callbacks to the rendered deferred (if desired) and return the deferred from and of your twisted.web.resource.Resource render_* methods.\n\nHere's a code sample of a Twisted Web resource that uses txTemplate\nto render a lovely Genshi template to say Hello World in HTML::\n\n    import os\n\n    from twisted.application import internet\n    from twisted.internet import reactor\n    from twisted.web import resource\n    from twisted.web import server\n\n    import txtemplate\n\n\n    TEMPLATE_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),\n                                \"templates\")\n\n\n    class HelloWorld(resource.Resource):\n        def __init__(self):\n            resource.Resource.__init__(self)\n            self.loader = txtemplate.GenshiTemplateLoader(TEMPLATE_DIR)\n\n        def getChild(self, name, request):\n            return self\n\n        def render_GET(self, request):\n            template_name = \"hello.xhtml\"\n            template = self.loader.load(template_name)\n            context = {\"greeting\": \"Hello\",\n                    \"greetee\": \"World\"}\n\n            def cb(content):\n                request.write(content)\n                request.setResponseCode(200)\n                request.finish()\n\n            d = template.render(**context)\n            d.addCallback(cb)\n            return server.NOT_DONE_YET\n\n\n    site = server.Site(HelloWorld())\n    reactor.listenTCP(8888, site)\n    reactor.run()\n\n\nThis example is included in `txtemplate/examples/txweb.py` and the\n`root.xhtml` template is in `txtemplate/examples/templates/root.xhtml`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteder%2Ftxtemplate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteder%2Ftxtemplate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteder%2Ftxtemplate/lists"}