Forráskód Böngészése

request is directly passed to build_content

Rodja Trappe 2 éve
szülő
commit
0449a93040
3 módosított fájl, 8 hozzáadás és 7 törlés
  1. 3 2
      nicegui/client.py
  2. 4 4
      nicegui/nicegui.py
  3. 1 1
      nicegui/page.py

+ 3 - 2
nicegui/client.py

@@ -62,13 +62,14 @@ class Client:
     def __exit__(self, *_):
         self.content.__exit__()
 
-    def build_response(self, status_code: int = 200) -> HTMLResponse:
+    def build_response(self, request: Request, status_code: int = 200) -> HTMLResponse:
+        prefix = self.request.headers.get('X-Forwarded-Prefix', '') if self.request else ''
         vue_html, vue_styles, vue_scripts = vue.generate_vue_content()
         elements = json.dumps({id: element.to_dict() for id, element in self.elements.items()})
-        prefix = self.request.headers.get('X-Forwarded-Prefix', '') if self.request else ''
         return HTMLResponse(
             TEMPLATE
             .replace(r'{{ client_id }}', str(self.id))
+            .replace(r'{{ socket_address }}', f'ws://{globals.host}:{globals.port}')
             .replace(r'{{ elements | safe }}', elements)
             .replace(r'{{ head_html | safe }}', self.head_html)
             .replace(r'{{ body_html | safe }}', f'{self.body_html}\n{vue_html}\n{vue_styles}')

+ 4 - 4
nicegui/nicegui.py

@@ -28,8 +28,8 @@ globals.index_client = Client(page('/'), shared=True).__enter__()
 
 
 @app.get('/')
-def index():
-    return globals.index_client.build_response()
+def index(request: Request) -> str:
+    return globals.index_client.build_response(request)
 
 
 @app.get('/_vue/dependencies/{path:path}')
@@ -66,7 +66,7 @@ async def exception_handler(r: Request, exception: Exception):
     globals.log.warning(f'{r.url} not found')
     with Client(page('')) as client:
         error_content(404, exception)
-    return client.build_response(404)
+    return client.build_response(r, 404)
 
 
 @app.exception_handler(Exception)
@@ -74,7 +74,7 @@ async def exception_handler(r: Request, exception: Exception):
     globals.log.exception(f'unexpected exception for {r.url}', exception)
     with Client(page('')) as client:
         error_content(500, exception)
-    return client.build_response(500)
+    return client.build_response(r, 500)
 
 
 @sio.on('connect')

+ 1 - 1
nicegui/page.py

@@ -70,7 +70,7 @@ class page:
                 result = task.result() if task.done() else None
             if isinstance(result, Response):  # NOTE if setup returns a response, we don't need to render the page
                 return result
-            return client.build_response()
+            return client.build_response(request)
 
         parameters = [p for p in inspect.signature(func).parameters.values() if p.name != 'client']
         # NOTE adding request as a parameter so we can pass it to the client in the decorated function