[Twisted-Python] twisted.web with dynamic + static content

Jeff Grimmett grimmtooth at gmail.com
Wed Oct 31 15:15:33 MDT 2018


Tried that, I get a big

No Such Resource

No such child resource.
back.  Watching it in FF's development panel, I see a 404 come back for /.
/static doesn't get served at all, of course.

This, however, DID work.

class tServer(Resource):
    isLeaf = False

    def getChild(self, path, request):
        print('You know what you doing.')

        if path == b'':
            print("Rendering /")
            return self

        return Resource.getChild(self, path, request)

    def render_GET(self, request):
        return bytes(content, "utf-8")

(ignore my printf debugging plz)

So, Thanks! :)

Regards,

Jeff


On Tue, Oct 30, 2018 at 6:42 PM Donal McMullan <donal.mcmullan at gmail.com>
wrote:

> Try replacing:
> isLeaf = True
> with
> isLeaf = False
>
>
> On Tue, 30 Oct 2018 at 21:32, Jeff Grimmett <grimmtooth at gmail.com> wrote:
>
>> I'm sure I'm overlooking something obvious here but I just can't get my
>> head around it.
>>
>> Here's the setup: twisted.web server that generates dynamic content.
>> Child that serves up static content, e.g. css and favoicon.  However, the
>> static content isn't making it. Instead, any hit to localhost/static
>> actually yields up a copy of / again.
>>
>> Here's the server code
>>
>> import sys
>>
>> from twisted.internet import reactor, endpoints
>> from twisted.web import server
>> from twisted.web.resource import Resource
>> from twisted.web.static import File
>>
>> sys.path.append('lib')
>>
>> content = """
>> <!DOCTYPE html>
>> <html lang="en">
>> <head>
>>     <meta charset="UTF-8">
>>     <link rel="stylesheet" href="/static/test.css" type="text/css" />
>> </head>
>> <body>
>>     <span class='twistedTest'>This</span> is a test
>> </body>
>> </html>
>> """
>>
>>
>> class tServer(Resource):
>>     isLeaf = True
>>
>>     def render_GET(self, request):
>>         return bytes(content, "utf-8")
>>
>>
>> if __name__ == "__main__":
>>     root = tServer()
>>     root.putChild(b"static", File("static"))
>>
>>     site = server.Site(root)
>>     endpoint = endpoints.TCP4ServerEndpoint(reactor, 8080)
>>     endpoint.listen(site)
>>
>>     reactor.run()
>>     print("Shutting down!")
>>
>> It's run with the command 'python tserver.py'.  The expectation is that
>> what is inside the custom <span> will be red.
>>
>> In the same dir as the script is a subdir 'static' with the css file
>> inside it.
>>
>> If I replace 'root' with     root = Resource() then / doesn't serve up
>> anything, but /static is a directory listing of the static directory.
>>
>> The dynamic server is basically a copy of several tutorials cooked down
>> to something that I could use to demonstrate the problem.
>>
>> What am I missing here? /headscratch
>>
>> Regards,
>>
>> Jeff
>> _______________________________________________
>> Twisted-Python mailing list
>> Twisted-Python at twistedmatrix.com
>> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>>
> _______________________________________________
> Twisted-Python mailing list
> Twisted-Python at twistedmatrix.com
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-python
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-python/attachments/20181031/5c543cad/attachment-0002.html>


More information about the Twisted-Python mailing list