Path template variables not correctly parsed with dot
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Python
- Sterne
- 24.4k
- Forks
- 2.3k
- Ø Merge
- 2 T. 7 Std.
- Gemergte PRs (30 T.)
- 13
Beschreibung
Bug description
Path template variables are not parsed/populated correctly when using a dot (.) as seperator between placeholders as in /dot/<foo>.<bar>/.
When using /dot/<foo>.<bar>/ as path template, a request to /dot/abc.def should result in a call to layout(foo='abc', bar='def').
Instead there is a call to layout(foo='abc.de', part=None). (Note the missing e at the end)
Using /dash/<foo>-<bar>/ as path template, the request url is handled as expected and variables are parsed/populated correctly.
Expected behavior
Variables should be parsed as expected and correctly independent of characters between seperators.
Minimal example
import dash
from dash import Dash, html, dcc
app = Dash(__name__, use_pages=True, pages_folder="")
dash.register_page(
"Dot",
layout=lambda foo=None, bar=None: html.H1([html.B(foo), html.I(bar)]),
path_template='/dot/<foo>.<bar>'
)
dash.register_page(
"Dash",
layout=lambda foo=None, bar=None: html.H1([html.B(foo), html.I(bar)]),
path_template='/dash/<foo>-<bar>'
)
app.layout = html.Div(
[
html.H1("App"),
html.Div([
html.Div(dcc.Link(f"{page['name']} - {page['path']}", href=page["path"]))
for page in dash.page_registry.values()
]),
html.Hr(),
dash.page_container,
]
)
if __name__ == "__main__":
app.run_server(debug=True)
Environment
dash 2.8.1
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie mit dem minimalen Dash-Beispiel und vergleichen Sie die Route /dot/<foo>.<bar> mit der funktionierenden Route /dash/<foo>-<bar>. Verfolgen Sie, wie path_template-Variablen geparst und befüllt werden, und prüfen Sie anschließend, dass eine Anfrage an /dot/abc.def foo='abc' und bar='def' ergibt, ohne durch Bindestriche getrennte Platzhalter zu beeinträchtigen.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- web-dev
- Issue-Typ
- Bug
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Aktivitätsstatus
- Veraltet
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 35/100