无法使用 python 包 web.py 仅显示 HTML 来提供本地静态 CSS 文件
Cannot serve local static CSS file using python package web.py only HTML displays
我目前正在上 python 课程,当页面加载时,它不会显示任何 CSS。
我的Controller.py在根目录D:\Coding\Python_Projects\Py\CodeWizard
我的 CSS 个文件在 D:\Coding\Python_Projects\Py\CodeWizard\static\css
我的 HTML 个文件在 D:\Coding\Python_Projects\Py\CodeWizard\Views\Templates
Controller.py
import web
urls = (
'/', 'home'
)
render = web.template.render("Views/Templates", base="MainLayout")
app = web.application(urls, globals())
# Classes/Routes
class home:
def GET(self):
return render.home()
if __name__ == "__main__":
app.run()
MainLayout.html:
$def with (page)
$var css: \static\css\bootstrap.min.css \static\css\bootstrap-material-design.min.css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodeWizard</title>
$if self.css:
$for style in self.css.split():
<link rel="stylesheet" href="$style"/>
</head>
<body>
<div id="app">
<nav class="navbar navbar-dark bg-primary fixed-top navbar-expand-lg">
<div class="navbar-header">
<a class="navbar-brand">CodeWizard</a>
</div>
<div class="nav navbar-nav mr-auto mt-2 mt-lg-0">
<a class ="nav-item nav-link" href="/">Home Feed</a>
<a class ="nav-item nav-link" href="/discover">Discover</a>
<a class ="nav-item nav-link" href="/profile">Profile</a>
<a class ="nav-item nav-link" href="/settings">Settings</a>
</div>
<div class="pull-right">
<a href"/register" class="btn btn-raised btn-default">Register</a>
</div>
</div>
$:page
</nav>
</body>
</html>
home.html:
<br /> <br /> <br />
<div class="container">
<h1>Hello CodeWizard</h1>
</div>
如果我没有在 css 文件位置的 static 前面加上额外的斜杠,我会收到一些控制台错误,例如 StaticApp 没有属性目录和 int() 的无效文字,基数为 10
加上额外的斜杠,我收到了一条 200 OK 消息。当我检查页面并查看网络时,它显示 CSS 文件的状态为已取消。
不知道如何解决这个问题。我试着搜索了很多。我用
为 chrome 创建了一个快捷方式
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"
--allow-file-access --disable-web-security --user-data dir="C:\ChromeLocalFileAccess"
那没有用,我还尝试了 css 文件的直接路径以及 file:///
和许多其他组合。
如果有人能帮助我,我将不胜感激,这样我就可以继续学习并学习更多内容 python :) 在此先感谢您。
这是 web.py 运行 在 Python 3.7 环境中的一个问题。它已被修复 pull request.
修复后你的路径不应以 \
:
开头
或者
$var css: static\css\bootstrap.min.css static\css\bootstrap-material-design.min.css
或
$var css: static/css/bootstrap.min.css static/css/bootstrap-material-design.min.css
会工作
这对我有用,所以在 mainLayout.html
中试试这个
$def with (page)
$var css: static/css/bootstrap.min.css
<html lang="en">
<head>
<meta charset="UTF-8">
<title>mainlayout</title>
$if self.css:
$for style in self.css.split( )
<link rel ="stylesheet" href="$style" />
</head>
<body>
<div id="app">
<nav class="navbar navbar-dark bg-primary fixed-top navbar-expand-lg">
<div class="navbar-header">
<a class="navbar-brand">CodeWizard</a>
</div>
<div class="nav navbar-nav mr-auto mt-2 mt-lg-0">
<a class ="nav-item nav-link" href="/">Home Feed</a>
<a class ="nav-item nav-link" href="/discover">Discover</a>
<a class ="nav-item nav-link" href="/profile">Profile</a>
<a class ="nav-item nav-link" href="/settings">Settings</a>
</div>
<div class="pull-right">
<a href="/register" class="btn btn-raised btn-default">Register</a>
</div>
</div>
<div>
$:page
</div>
</body>
</html>
我目前正在上 python 课程,当页面加载时,它不会显示任何 CSS。
我的Controller.py在根目录D:\Coding\Python_Projects\Py\CodeWizard
我的 CSS 个文件在 D:\Coding\Python_Projects\Py\CodeWizard\static\css
我的 HTML 个文件在 D:\Coding\Python_Projects\Py\CodeWizard\Views\Templates
Controller.py
import web
urls = (
'/', 'home'
)
render = web.template.render("Views/Templates", base="MainLayout")
app = web.application(urls, globals())
# Classes/Routes
class home:
def GET(self):
return render.home()
if __name__ == "__main__":
app.run()
MainLayout.html:
$def with (page)
$var css: \static\css\bootstrap.min.css \static\css\bootstrap-material-design.min.css
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CodeWizard</title>
$if self.css:
$for style in self.css.split():
<link rel="stylesheet" href="$style"/>
</head>
<body>
<div id="app">
<nav class="navbar navbar-dark bg-primary fixed-top navbar-expand-lg">
<div class="navbar-header">
<a class="navbar-brand">CodeWizard</a>
</div>
<div class="nav navbar-nav mr-auto mt-2 mt-lg-0">
<a class ="nav-item nav-link" href="/">Home Feed</a>
<a class ="nav-item nav-link" href="/discover">Discover</a>
<a class ="nav-item nav-link" href="/profile">Profile</a>
<a class ="nav-item nav-link" href="/settings">Settings</a>
</div>
<div class="pull-right">
<a href"/register" class="btn btn-raised btn-default">Register</a>
</div>
</div>
$:page
</nav>
</body>
</html>
home.html:
<br /> <br /> <br />
<div class="container">
<h1>Hello CodeWizard</h1>
</div>
如果我没有在 css 文件位置的 static 前面加上额外的斜杠,我会收到一些控制台错误,例如 StaticApp 没有属性目录和 int() 的无效文字,基数为 10
加上额外的斜杠,我收到了一条 200 OK 消息。当我检查页面并查看网络时,它显示 CSS 文件的状态为已取消。
不知道如何解决这个问题。我试着搜索了很多。我用
为 chrome 创建了一个快捷方式"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access --disable-web-security --user-data dir="C:\ChromeLocalFileAccess"
那没有用,我还尝试了 css 文件的直接路径以及 file:///
和许多其他组合。
如果有人能帮助我,我将不胜感激,这样我就可以继续学习并学习更多内容 python :) 在此先感谢您。
这是 web.py 运行 在 Python 3.7 环境中的一个问题。它已被修复 pull request.
修复后你的路径不应以 \
:
或者
$var css: static\css\bootstrap.min.css static\css\bootstrap-material-design.min.css
或
$var css: static/css/bootstrap.min.css static/css/bootstrap-material-design.min.css
会工作
这对我有用,所以在 mainLayout.html
中试试这个$def with (page)
$var css: static/css/bootstrap.min.css
<html lang="en">
<head>
<meta charset="UTF-8">
<title>mainlayout</title>
$if self.css:
$for style in self.css.split( )
<link rel ="stylesheet" href="$style" />
</head>
<body>
<div id="app">
<nav class="navbar navbar-dark bg-primary fixed-top navbar-expand-lg">
<div class="navbar-header">
<a class="navbar-brand">CodeWizard</a>
</div>
<div class="nav navbar-nav mr-auto mt-2 mt-lg-0">
<a class ="nav-item nav-link" href="/">Home Feed</a>
<a class ="nav-item nav-link" href="/discover">Discover</a>
<a class ="nav-item nav-link" href="/profile">Profile</a>
<a class ="nav-item nav-link" href="/settings">Settings</a>
</div>
<div class="pull-right">
<a href="/register" class="btn btn-raised btn-default">Register</a>
</div>
</div>
<div>
$:page
</div>
</body>
</html>