FastHTML快速入门:http方法,CSS文件和内联样式,其他静态媒体文件位置
HTTP方法
FastHTML通过函数名与HTTP方法进行匹配。到目前为止,我们定义的URL路由都是针对HTTP GET方法的,这是网页最常见的方法。
表单提交通常作为HTTP POST发送。在处理更动态的网页设计时,也就是所谓的单页应用(SPA),可能会需要其他方法,如HTTP PUT和HTTP DELETE。FastHTML处理这种情况的方式是通过更改函数名。
main.py
from fasthtml.common import *
app, rt = fast_app()
@rt("/")
def get():return Titled("HTTP GET", P("处理GET请求"))
@rt("/")
def post():return Titled("HTTP POST", P("处理POST请求"))
serve()
第6行:在第6行,因为使用了get()
函数名,这将处理指向/
URI的HTTP GET请求。
第10行:在第10行,因为使用了post()
函数名,这将处理指向/
URI的HTTP POST请求。
CSS文件和内联样式
在这里,我们修改默认的头部信息,以演示如何使用Sakura CSS微框架而不是FastHTML默认的Pico CSS。
main.py
from fasthtml.common import *
app, rt = fast_app(pico=False,hdrs=(Link(rel='stylesheet', href='assets/normalize.min.css', type='text/css'),Link(rel='stylesheet', href='assets/sakura.css', type='text/css'),Style("p {color: red;}")
))
@app.get("/")
def home():return Titled("FastHTML",P("让我们开始吧!"),)
serve()
第4行:通过将pico
设置为False
,FastHTML将不会包含pico.min.css
。
第7行:这将生成一个HTML <link>
标签,用于引入Sakura的css。
第8行:如果你想要内联样式,Style()
函数会将结果放入HTML中。
其他静态媒体文件位置
正如你所看到的,Script
和Link
是针对网络应用中最常见的静态媒体使用案例而设计的:包括JavaScript、CSS和图片。但它也适用于视频和其他静态媒体文件。默认行为是在根目录中查找这些文件 - 通常我们不需要做任何特殊的事情来包含它们。我们可以通过向fast_app
函数添加static_path
参数来更改查找文件的默认目录。
app, rt = fast_app(static_path='public')
FastHTML还允许我们定义一个使用FileResponse
的路由,以在指定路径上提供文件。这对于从不同目录提供图片、视频和其他媒体文件非常有用,无需更改许多文件的路径。所以如果我们移动了包含媒体文件的目录,我们只需要在一个地方更改路径。在下面的例子中,我们从名为public
的目录中调用图片。
@rt("/{fname:path}.{ext:static}")
async def get(fname:str, ext:str): return FileResponse(f'public/{fname}.{ext}')