繁体   English   中英

无法从 Web Py controller 访问样式表和 javascript 文件

[英]Not able to access stylesheet and javascript files from Web Py controller

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

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

*我将传递来自 session object 的用户名值。 现在单击,虽然应用程序正确路由到设置页面,但它无法从 static 目录加载适当的 styles 和 JS 文件。 请在下面找到我的文件夹结构:

项目文件夹结构

项目文件夹结构

请找到我已配置的 controller 文件:

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 styles 正在加载文件。 但是,对于设置动态 URL 应用程序正在尝试再次从 /settings/static/cs 或 /settings/static/js 文件夹加载 styles 和 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 没有被加载。

你误解了这里发生的事情。

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

你没有列出你的 Settings.html 模板文件的内容,所以我只能猜测,但是对/settings/static/css/mystyle.css的请求是由“/settings/(.*)”路径解析的,变成Settings.GET(user="static/css/mystyle.css") ) 再次返回render.Settings()

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM