-
Notifications
You must be signed in to change notification settings - Fork 598
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Duplicate Check
- I have searched the opened issues and there are no duplicates
Describe the bug
Hi.
English is not my primary lenguage so sorry for that
I am develpoing a web app with flet and I am trying to get arguments from the url. In the official doc say this:
Also i found this in "querystring.py", inside of "flet/core/.
class QueryString(UrlComponents):
Note:
`QueryString` class is meant to be for internal use inside of page. Hence, methods such as `get()` or `to_dict()` must be\n
called from `page` object\n
Constructor:
`page` takes `Page` class an an argument and extracts URL automatically\n
Methods:
Public:
`get()` method takes `key` an an argument and returns value according to key. (Ex: .../?name=Joe -> `get('name')` -> `Joe`)\n
`to_dict` returns all the key-value pairs of querystring as a `dict`\n
`path` returns url path (Ex: .../products?id=1 -> /products)
Private(meant to be used only inside of page class):
`post()` method takes key-value pair as an argument and returs proceeded querystring ready to be merged with URL
I used as indicated but I got this error using http://127.0.0.1:52981/?name=Joe:
File "C:\Users\benja\OneDrive\Desktop\musica\ia_fader\src\main.py", line 7, in main
token = page.query.get("name")
File "C:\Users\benja\OneDrive\Desktop\musica\ia_fader\.venv\Lib\site-packages\flet\core\querystring.py", line 73, in get
return self._data[key]
~~~~~~~~~~^^^^^
KeyError: 'name'
I also try using page.query.to_dict() but returns an empty dict.
here is my code, some variables are in spanish but nothing important. (also, I dont know if it is important but is an ia chat)
Code sample
Code
#from API_ia import ia, generar_imagen
import asyncio
ia_ocupada = False
def main(page: ft.Page):
chat = ft.Column(expand=True,scroll= ft.ScrollMode.AUTO)
token = page.query.get("name")
print(token)
async def send_click(e):
global ia_ocupada
if(ia_ocupada == False):
valor = new_message.value #guardo valor usuario
mensaje_usuario = ft.Container(content=ft.Text(valor),animate_scale=ft.Animation(300, ft.AnimationCurve.BOUNCE_OUT),margin= ft.margin.all(10),padding = ft.padding.all(10),bgcolor="#240046",border_radius=10,expand=False,scale=0.01)
chat.controls.append(
ft.Row([mensaje_usuario],alignment=ft.MainAxisAlignment.END))
chat.update()
await asyncio.sleep(0.1) #Espera para renderizar el mensaje primero
mensaje_usuario.scale = 1
mensaje_usuario.update()
ia_ocupada = True
valor = "Pensando..."
pensar_ia =ft.Container(content=ft.Text(valor),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10)
chat.controls.append(pensar_ia)
page.update() #Muestra pensando
await asyncio.sleep(0.1)
valor = new_message.value #guardo valor usuario
new_message.value = "" #limpio textfield
respuesta = ia(valor) # pregunta a la api
new_message.value = ""
chat.controls.remove(pensar_ia)
page.update()
chat.controls.append(ft.Container(content=ft.Markdown(
respuesta,
selectable=True,
extension_set=ft.MarkdownExtensionSet.GITHUB_WEB,
),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#3c096c",border_radius=10))
page.update()
ia_ocupada = False
def gen_imagen(e):
global ia_ocupada
if(ia_ocupada == False):
ia_ocupada = True
valor = new_message.value
#request usuario
chat.controls.append(ft.Container(content=ft.Text(valor),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10))
new_message.value = ""
page.update()
pensar_ia =ft.Container(content=ft.Text("Generando imagen, porfavor espere..."),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10)
chat.controls.append(pensar_ia)
page.update() #Muestra pensando
chat.controls.remove(pensar_ia)
respuesta = generar_imagen(valor)
chat.controls.append(ft.Container(content=respuesta,margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#3c096c",border_radius=10))
page.update()
ia_ocupada = False
new_message = ft.TextField(expand= True,bgcolor="#636e72",on_submit= send_click)
page.add(
chat, ft.Row(controls=[new_message,
ft.IconButton(icon=ft.Icons.SEND_ROUNDED, on_click=send_click),
ft.IconButton(icon=ft.Icons.IMAGE_ROUNDED, on_click=gen_imagen)])
)
ft.app(target=main, view=ft.AppView.WEB_BROWSER, assets_dir="assets")
To reproduce
- jus run flet (I am trying flet run --web btw)
Expected behavior
when the url has a string like /?name="joe", you should see it in the terminal
Screenshots / Videos
Captures
import flet as ft
from API_ia import ia, generar_imagen
import asyncio
ia_ocupada = False
def main(page: ft.Page):
chat = ft.Column(expand=True,scroll= ft.ScrollMode.AUTO)
token = page.query.get("name")
print(token)
async def send_click(e):
global ia_ocupada
if(ia_ocupada == False):
valor = new_message.value #guardo valor usuario
mensaje_usuario = ft.Container(content=ft.Text(valor),animate_scale=ft.Animation(300, ft.AnimationCurve.BOUNCE_OUT),margin= ft.margin.all(10),padding = ft.padding.all(10),bgcolor="#240046",border_radius=10,expand=False,scale=0.01)
chat.controls.append(
ft.Row([mensaje_usuario],alignment=ft.MainAxisAlignment.END))
chat.update()
await asyncio.sleep(0.1) #Espera para renderizar el mensaje primero
mensaje_usuario.scale = 1
mensaje_usuario.update()
ia_ocupada = True
valor = "Pensando..."
pensar_ia =ft.Container(content=ft.Text(valor),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10)
chat.controls.append(pensar_ia)
page.update() #Muestra pensando
await asyncio.sleep(0.1)
valor = new_message.value #guardo valor usuario
new_message.value = "" #limpio textfield
respuesta = ia(valor) # pregunta a la api
new_message.value = ""
chat.controls.remove(pensar_ia)
page.update()
chat.controls.append(ft.Container(content=ft.Markdown(
respuesta,
selectable=True,
extension_set=ft.MarkdownExtensionSet.GITHUB_WEB,
),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#3c096c",border_radius=10))
page.update()
ia_ocupada = False
def gen_imagen(e):
global ia_ocupada
if(ia_ocupada == False):
ia_ocupada = True
valor = new_message.value
#request usuario
chat.controls.append(ft.Container(content=ft.Text(valor),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10))
new_message.value = ""
page.update()
pensar_ia =ft.Container(content=ft.Text("Generando imagen, porfavor espere..."),margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#240046",border_radius=10)
chat.controls.append(pensar_ia)
page.update() #Muestra pensando
chat.controls.remove(pensar_ia)
respuesta = generar_imagen(valor)
chat.controls.append(ft.Container(content=respuesta,margin= ft.margin.all(10),padding = ft.padding.all(15),bgcolor="#3c096c",border_radius=10))
page.update()
ia_ocupada = False
new_message = ft.TextField(expand= True,bgcolor="#636e72",on_submit= send_click)
page.add(
chat, ft.Row(controls=[new_message,
ft.IconButton(icon=ft.Icons.SEND_ROUNDED, on_click=send_click),
ft.IconButton(icon=ft.Icons.IMAGE_ROUNDED, on_click=gen_imagen)])
)
ft.app(target=main, view=ft.AppView.WEB_BROWSER, assets_dir="assets")
Operating System
Windows
Operating system details
win 10
Flet version
0.28.3
Regression
No, it isn't
Suggestions
No response
Logs
Logs
[Paste your logs here]Additional details
No response
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working