environment
- windows 10 64bit
- python 3.8.15
- pynecone 0.1.14
Introduction
Pynecone
is an open source framework based on pure python
for developing web app
. It depends on nodejs
, but it does not need to write additional front-end code, which is very friendly to friends who have not touched the front-end.
Install
The first step is to install nodejs
, go to the official website https://nodejs.org/en/ , and download the LTS
version. The latest version is 18.12.1 LTS
After the file is downloaded, double-click to install it foolishly
The second step is to install pynecone
, using pip
pip install -U pynecone-io
test
After the installation is complete, we come to the desktop and create a project
cd ~/Desktop mkdir pc_app pc init
Then, open powershell
with administrator privileges and execute pc run
Next, come to the browser and enter the address http://localhost:3000
You can see that the default page looks like this, and the page also prompts that you can change the page by modifying the file pc_app/pc_app.py
, that is to say, you can change the page without writing html
, javascript
and css
If you encounter an error in pc run
Error: Multiple children were passed to <Link> with `href` of `one_value` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children
You need to upgrade pynecone-io
, please see the issue
in the project for details, see the link at the end of the article
Sample Analysis
Going back to the example above, look at the code in the file pc_app/pc_app.py
class State(pc.State): """The app state.""" pass
In pynecone
, the state
defines all the variables in the application (here called vars
), these variables can be changed by the methods in the state
, these methods are called event handlers ( event handler
), which are not involved in this example, you can see the following In this example, there are 2 event handlers, increment
and decrement
class State(pc.State): count: int = 0 def increment(self): self.count += 1 def decrement(self): self.count -= 1
The next index
method is responsible for the display of the front-end page, which is also the part that needs to be focused on
def index(): return pc.center( pc.vstack( pc.heading("Welcome to Pynecone!", font_size="2em"), pc.box("Get started by editing ", pc.code(filename, font_size="1em")), pc.link( "Check out our docs!", href=docs_url, border="0.1em solid", padding="0.5em", border_radius="0.5em", _hover={ "color": "rgb(107,99,246)", }, ), spacing="1.5em", font_size="2em", ), padding_top="10%", )
In pynecone
, there are more than 50 components ( component
) available, such as common buttons button
, box
, heading
, slider
, etc. For details, please refer to this link https://pynecone.io/docs/library . In this example, the title heading
, box
and hyperlink link
are used. These three components are installed in the vstack
, that is, arranged vertically and centered ( pc.center
). The style of each component can be adjusted through the parameters in the corresponding method.
Components can refer to variables in the application, here is an example of a button
pc.button( "Decrement", color_scheme="red", border_radius="1em", on_click=State.decrement, ),
What follows in on_click
is the event handler decrement
, that is, when the button is clicked once, the value of count
is reduced by 1
When the page is written, you need to set up routing ( Routing
)
# 初始化app app = pc.App(state=State) # 设置应用的根URl app.add_page(index)
If you want to add multiple pages, you can keep up with the parameter route
when add_page
, such as
app.add_page(second_page, route="/demo")
The accessed url
becomes http://localhost:3000/demo
The last step is to start the service, which is called compile
in pynecone
app.compile()
In this way, a simple web
project is completed without writing any front-end related code
There is also an important configuration file in the project, which is pcconfig.py
. For example, if you want to change the default port, you can do this
Then the url
accessed becomes http://localhost:5000
In addition, another example warehouse is officially provided, which contains many similar projects, which are worth learning from. The link is https://github.com/pynecone-io/pynecone-examples
References
- https://pynecone.io/
- https://github.com/pynecone-io/pynecone
- https://github.com/pynecone-io/pynecone-examples
- https://github.com/pynecone-io/pynecone/issues/224
- https://github.com/pynecone-io/pynecone/issues/113
This article is transferred from https://xugaoxiang.com/2023/01/31/pynecone-python-web/
This site is only for collection, and the copyright belongs to the original author.