Skip to content

Commit d15379f

Browse files
committed
feat: add customizable page titles
- Add title parameter to FastHTML class with default value - Update _xt_cts to use app.title instead of hardcoded value
1 parent f1cc346 commit d15379f

File tree

2 files changed

+6
-4
lines changed

2 files changed

+6
-4
lines changed

fasthtml/core.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -392,7 +392,7 @@ def _xt_cts(req, resp):
392392
hdr_tags = 'title','meta','link','style','base'
393393
heads,bdy = partition(resp, lambda o: getattr(o, 'tag', '') in hdr_tags)
394394
if resp and 'hx-request' not in req.headers and not any(getattr(o, 'tag', '')=='html' for o in resp):
395-
resp = respond(req, heads or [Title('FastHTML page')], bdy)
395+
resp = respond(req, heads or [Title(req.app.title)], bdy)
396396
return _to_xml(req, resp, indent=fh_cfg.indent), http_hdrs, ts
397397

398398
# %% ../nbs/api/00_core.ipynb
@@ -504,13 +504,14 @@ def def_hdrs(htmx=True, surreal=True):
504504

505505
# %% ../nbs/api/00_core.ipynb
506506
class FastHTML(Starlette):
507-
def __init__(self, debug=False, routes=None, middleware=None, exception_handlers=None,
507+
def __init__(self, debug=False, routes=None, middleware=None, title: str = "FastHTML page", exception_handlers=None,
508508
on_startup=None, on_shutdown=None, lifespan=None, hdrs=None, ftrs=None, exts=None,
509509
before=None, after=None, surreal=True, htmx=True, default_hdrs=True, sess_cls=SessionMiddleware,
510510
secret_key=None, session_cookie='session_', max_age=365*24*3600, sess_path='/',
511511
same_site='lax', sess_https_only=False, sess_domain=None, key_fname='.sesskey',
512512
body_wrap=noop_body, htmlkw=None, nb_hdrs=False, **bodykw):
513513
middleware,before,after = map(_list, (middleware,before,after))
514+
self.title = title
514515
hdrs,ftrs,exts = map(listify, (hdrs,ftrs,exts))
515516
exts = {k:htmx_exts[k] for k in exts}
516517
htmlkw = htmlkw or {}

nbs/api/00_core.ipynb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1085,7 +1085,7 @@
10851085
" hdr_tags = 'title','meta','link','style','base'\n",
10861086
" heads,bdy = partition(resp, lambda o: getattr(o, 'tag', '') in hdr_tags)\n",
10871087
" if resp and 'hx-request' not in req.headers and not any(getattr(o, 'tag', '')=='html' for o in resp):\n",
1088-
" resp = respond(req, heads or [Title('FastHTML page')], bdy)\n",
1088+
" resp = respond(req, heads or [Title(req.app.title)], bdy)\n",
10891089
" return _to_xml(req, resp, indent=fh_cfg.indent), http_hdrs, ts"
10901090
]
10911091
},
@@ -1351,13 +1351,14 @@
13511351
"source": [
13521352
"#| export\n",
13531353
"class FastHTML(Starlette):\n",
1354-
" def __init__(self, debug=False, routes=None, middleware=None, exception_handlers=None,\n",
1354+
" def __init__(self, debug=False, routes=None, middleware=None, title: str = \"FastHTML page\", exception_handlers=None,\n",
13551355
" on_startup=None, on_shutdown=None, lifespan=None, hdrs=None, ftrs=None, exts=None,\n",
13561356
" before=None, after=None, surreal=True, htmx=True, default_hdrs=True, sess_cls=SessionMiddleware,\n",
13571357
" secret_key=None, session_cookie='session_', max_age=365*24*3600, sess_path='/',\n",
13581358
" same_site='lax', sess_https_only=False, sess_domain=None, key_fname='.sesskey',\n",
13591359
" body_wrap=noop_body, htmlkw=None, nb_hdrs=False, **bodykw):\n",
13601360
" middleware,before,after = map(_list, (middleware,before,after))\n",
1361+
" self.title = title\n",
13611362
" hdrs,ftrs,exts = map(listify, (hdrs,ftrs,exts))\n",
13621363
" exts = {k:htmx_exts[k] for k in exts}\n",
13631364
" htmlkw = htmlkw or {}\n",

0 commit comments

Comments
 (0)