【问题标题】:Not able to access stylesheet and javascript files from Web Py controller无法从 Web Py 控制器访问样式表和 javascript 文件
【发布时间】:2020-09-10 06:55:45
【问题描述】:

我对 Python 编码非常陌生。我开始使用 Web.py 构建一个简单的站点。虽然我能够正确创建所有简单的路由,如 Home、Profile 等,但我在使用正则表达式字符设置路由时遇到了问题。所以,我有一个点击链接到设置页面的路线:

'/settings/(.*)', 'Settings'

* 中,我将从会话对象传递用户名值。现在单击,虽然应用程序正确路由到设置页面,但它无法从静态目录加载适当的样式和 JS 文件。请在下面找到我的文件夹结构:

项目文件夹结构

请找到我已配置的控制器文件:

import web
from Models import Users, Login, Posts

web.config.debug = False
urls = (
    '/', 'Home',
    '/settings/(.*)', 'Settings'
)

app = web.application(urls, globals())
session = web.session.Session(app, web.session.DiskStore("sessions"), initializer= {"user": None})
session_data = session._initializer

render = web.template.render("Views/Templates", base="CodeWizardContainer",
                         globals={'session': session_data, 'current_user': 
session_data["user"]})


class Home:
   def GET(self):
       return render.Home()


class Settings:
    def GET(self, user):
        return render.Settings()


if __name__ == "__main__":
     app.run()

我所有的 CSS 和 JS 文件都在 ROOT 目录下的 static 文件夹下。对于其他简单的 URL,样式正在加载文件。但是,对于设置动态 URL,应用程序正在尝试从 /settings/static/cs 或 /settings/static/js 文件夹再次加载样式和 javascript,这显然不是正确的路径。但是我没有在应用程序的任何地方引用 CSS 或 JS 文件的此类路径。只有在设置路由访问期间,我才遇到这样的问题。请在下面找到整个 Python 控制台日志:

127.0.0.1:57740 - - [23/May/2020 17:41:04] "HTTP/1.1 GET /" - 200 OK
127.0.0.1:57741 - - [23/May/2020 17:41:04] "HTTP/1.1 GET /static/js/scripty.js" - 304 Not Modified
127.0.0.1:57740 - - [23/May/2020 17:41:04] "HTTP/1.1 GET /static/css/mystyle.css" - 304 Not Modified
127.0.0.1:57748 - - [23/May/2020 17:41:19] "HTTP/1.1 GET /register" - 200 OK
127.0.0.1:57748 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/user1" - 200 OK
127.0.0.1:57749 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/css/mystyle.css" - 200 OK
127.0.0.1:57751 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/js/jquery-3.4.1.min.js" - 200 OK
127.0.0.1:57753 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/js/popper.min.js" - 200 OK
127.0.0.1:57748 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/css/bootstrap.css" - 200 OK
127.0.0.1:57755 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/js/bootstrap.min.js" - 200 OK
127.0.0.1:57757 - - [23/May/2020 17:41:24] "HTTP/1.1 GET /settings/static/js/scripty.js" - 200 OK

虽然,浏览器中的状态显示为 200 OK,但由于路径 /settings/static/css/ 或 /settings/static/js/ 不正确,样式和 JS 没有被加载。

【问题讨论】:

    标签: javascript python html css web.py


    【解决方案1】:

    你对这里发生的事情有点误解。

    /settings/static/css/mystyle.css 和朋友正在成功加载:他们只是不是你想象的那样。

    您没有列出 Settings.html 模板文件的内容,所以我只能猜测,但对 /settings/static/css/mystyle.css 的请求由 '/settings/(.*)' 路径解析,变为 @987654323 @ 再次返回 render.Settings()

    另外,请注意您的 render 值在程序启动时设置一次,因此如果/当您更改用户值时它不会改变(至少我认为您正在尝试这样做。)相反,在您的 GET() 中,您可以为所选用户进行配置,并在调用 render.Settings() 时发送可能不同的值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多