Поэтому я хочу, чтобы все URL-адреса начинались с "/ files".Закрученный корнем не по умолчанию HTTP
Корневая страница, расположенная на «localhost: 3000/files», вернет список конкретных папок, которые будут совместно использоваться. Доля по умолчанию не позволяет мне ограничивать, какие папки для обмена.
Я хочу показать все файлы в папке при навигации к папке. С URL-адресом, как «localhost: 3000/files/Documents».
Я хочу рекурсивно разделить конкретные папки и файлы в папках. С URL-адресом, например «localhost: 3000/files/Documents/Filename.pdf».
from twisted.web.server import Site from twisted.web.resource import Resource from twisted.web.static import File from twisted.internet import reactor folder_list = ["Documents", "Downloads"] class RootPage(Resource): isLeaf = True def render_GET(self, request): print request.uri new_request = request.uri[7:] if len(new_request) <= 3: ret = "" for folders in folder_list: ret += "<a href='%s'>%s</a></br>" % ("/files/" + folders.replace(" ", "-") , folders) return ret root = Resource() #folders root.putChild('files', RootPage()) for folders in folder_list: root.putChild(folders.replace(" ", "-"), File("/home/user1/" + folders)) factory = Site(root) reactor.listenTCP(3000, factory) reactor.run()
2
A
ответ
2
Проблемы
1) В .putChild()
вызова, вы устанавливаете свои адреса папки, как дети корня, а не дети /files
.
2) В определении класса RootPage
вы устанавливаете isLeaf
на номер True
. Но вы создаете внутренний узел, а не листовой узел.
Решение
Удалить isLeaf
строку и изменить другие соответствующие строки к этому:
root = Resource()
rootpage = RootPage()
#folders
root.putChild('files', rootpage)
for folders in folder_list:
rootpage.putChild(folders.replace(" ", "-"), File("/home/user1/" + folders))
factory = Site(root)
отлично работает спасибо. – GeneralZero