gpt4 book ai didi

python - Pyramid 中的 HTML 文件响应

转载 作者:太空宇宙 更新时间:2023-11-03 18:10:57 26 4
gpt4 key购买 nike

我正在尝试调整 Pyramid 教程中的待办事项列表应用程序 here创建一个 Python 刽子手游戏。我的目录结构如下:

/tasks
tasks.py
/static
custom.css
/templates
main.html

我想要一个单一的 View main.html (即,只有游戏标题、当前带有空白的图片、分数等,以及每个字母猜测的按钮)每次用户选择一个字母时都会更新。

我想我可以通过每次按下按钮时动态创建一个新的 HTML 显示来实现此目的,类似于所示的 jpg 服务方法 here.但是在运行 python jobs.py 并在浏览器中打开 http://localhost:8080/# 时,它会给出服务器错误并: "OSError: [ Errno 2] 终端中没有这样的文件或目录:'/templates/main.html'

这是我的tasks.py:

import os
import logging

from pyramid.config import Configurator
from pyramid.events import NewRequest
from pyramid.events import ApplicationCreated
from pyramid.exceptions import NotFound
from pyramid.httpexceptions import HTTPFound
from pyramid.response import FileResponse
from pyramid.view import view_config

from wsgiref.simple_server import make_server

logging.basicConfig()
log = logging.getLogger(__file__)

here = os.path.dirname(os.path.abspath(__file__))

#@view_config(route_name='home', renderer='main.mako')
#def main_page(request):
# print request #just checking
# return {}

@view_config(route_name='home')
def main_page(request):
response = FileResponse(os.path.join(here,'/templates/main.html'), \
request=request, content_type='text/html')
return response

if __name__ == '__main__':
settings = {}
settings['reload_all'] = True
settings['debug_all'] = True
settings['mako.directories'] = os.path.join(here, 'templates')


config = Configurator(settings=settings)
config.include('pyramid_mako')
config.add_route('home', '/')

config.add_static_view('static', os.path.join(here, 'static'))

config.scan()

app = config.make_wsgi_app()
server = make_server('0.0.0.0', 8080, app)
print 'server made'
server.serve_forever()

考虑到 here 声明,我不明白如何找不到该文件。正如您从注释掉的 view_config 中看到的,我首先尝试使用我的初始 HTML 文件(重命名为 main.mako)作为渲染器,它运行良好并显示了主要内容页面很好。

但我不认为我可以使用它来根据需要动态更新。我在这里缺少什么?也许我需要向 settings 字典中添加其他内容?

最佳答案

您收到此错误是因为您使用的是绝对路径 /templates/main.html。os.path.join 工作原理的简单示例:

>>> os.path.join('/some/path/to/project', '/templates/main.html')
'/templates/main.html'
>>> os.path.join('/some/path/to/project', 'templates/main.html')
'/some/path/to/project/templates/main.html'

所以尝试将 os.path.join(here,'/templates/main.html') 更改为 os.path.join(here,'templates/main.html') .

关于python - Pyramid 中的 HTML 文件响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com