Skip to content

Commit 798ba2f

Browse files
30 - Dyanmic URL Routing for Detail Pages
1 parent 8ec7369 commit 798ba2f

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

full_stack_python/blog/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
from .add import blog_post_add_page
2+
from .detail import blog_post_detail_page
23
from .list import blog_post_list_page
34
from .model import BlogPostModel
45
from .state import BlogPostState
56

67
__all__= [
78
'blog_post_add_page',
9+
'blog_post_detail_page',
810
'blog_post_list_page',
911
'BlogPostModel',
1012
'BlogPostState'

full_stack_python/blog/detail.py

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import reflex as rx
2+
3+
from ..ui.base import base_page
4+
5+
from . import state
6+
7+
# @rx.page(route='/about')
8+
def blog_post_detail_page() -> rx.Component:
9+
my_child = rx.vstack(
10+
rx.heading(state.BlogPostState.post.title, size="9"),
11+
rx.text(
12+
state.BlogPostState.post.content,
13+
),
14+
spacing="5",
15+
align="center",
16+
min_height="85vh"
17+
)
18+
return base_page(my_child)

full_stack_python/blog/state.py

+19
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,25 @@ class BlogPostState(rx.State):
99
posts: List['BlogPostModel'] = []
1010
post: Optional['BlogPostModel'] = None
1111

12+
@rx.var
13+
def blog_post_id(self):
14+
return self.router.page.params.get("blog_id", "")
15+
16+
def get_post_detail(self):
17+
with rx.session() as session:
18+
if self.blog_post_id == "":
19+
self.post = None
20+
return
21+
result = session.exec(
22+
select(BlogPostModel).where(
23+
BlogPostModel.id == self.blog_post_id
24+
)
25+
).one_or_none()
26+
self.post = result
27+
# return
28+
29+
30+
1231
def load_posts(self):
1332
with rx.session() as session:
1433
result = session.exec(

full_stack_python/full_stack_python.py

+6
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,12 @@ def index() -> rx.Component:
6161
route=navigation.routes.BLOG_POST_ADD_ROUTE
6262
)
6363

64+
app.add_page(
65+
blog.blog_post_detail_page,
66+
route="/blog/[blog_id]",
67+
on_load=blog.BlogPostState.get_post_detail
68+
)
69+
6470
app.add_page(contact.contact_page,
6571
route=navigation.routes.CONTACT_US_ROUTE)
6672
app.add_page(

0 commit comments

Comments
 (0)