Mobile SEO

How To Create A UI For Your Python App


Python is without doubt one of the widespread programming languages for automating search engine optimisation processes.

One of many biggest libraries for making a front-end for our apps with none HTML, CSS data, or coding with a JavaScript-powered framework is Streamlit package deal.

On this Streamlit tutorial, we’ll dive into how one can create a wonderful app with Python and the Dockerfile for deploying your Streamlit app.

What Is Streamlit?

Streamlit is an open-source app framework (a Python package deal) that provides us the ability for creating nice-looking apps with none front-end improvement data.

This makes us free from involvement in any front-end framework or coding in HTML, CSS, and JavaScript.

You employ pure Python to develop your front-end.

When Will The Streamlit Library Turn into Helpful?

To start with, in case you are coding Python scripts that run frequently on a machine with a job scheduler like cron, Streamlit isn’t helpful for you.

However in case you are creating a software that you just need to share together with your workforce members, for instance, a key phrase analysis app, you need to use Streamlit.

Additionally, when you want a person authentication methodology, the Streamlit neighborhood developed a package deal that may deal with it for you.

Create A Streamlit App: Getting Began

Let’s create a easy app that will get autocomplete queries for a seed key phrase from the Google public API.

Earlier than starting, create a folder in your machine, and identify it what you need.

Additionally, I’ll assume you may have put in Python earlier than and know the fundamentals of Python programming.

For the entire course of, we have to use these Python libraries:

  • Requests.
  • Streamlit.
  • Streamlit-Authenticator.
  • PyYAML.

Additionally, we’ll import a Python normal library:

The tutorial code may be present in my Streamlit starter template repository on Github.

Putting in The Streamlit Package deal

To start with, I want to create a digital setting by operating python3 -m venv .env, after which putting in the Streamlit package deal by operating pip3 set up streamlit.

Now create a Python script. Let’s name it streamlit_app.py.

In complicated tasks which have too many capabilities, I want to have separate Python script recordsdata for my totally different capabilities after which import these into the streamlit_app.py or create a separate app with Flask or FastAPI.

For instance, in a key phrase analysis app, I’ve a Python script for various capabilities that get knowledge from Semrush, a script for getting the highest 10 or 20 outcomes from Google, a script to get the Google autocomplete and Google-related searches, and many others.

Get The Google Autocomplete Queries

For making requests, we have to use the Requests package deal. To get this package deal, it is advisable run pip3 set up requests.

Additionally, to parse the autocomplete API response, we have to import the Python normal JSON library.

To start with, we import the JSON normal library, the Requests package deal for making requests, and Streamlit for creating our app.

Then, I outlined a perform for getting the Google autocomplete queries as a listing of strings.

I used exchange perform twice to maintain all the pieces easy, however you need to use re library for utilizing regex.

"""A Streamlit app for getting the Google autocomplete queries
"""
import json

import requests
import streamlit as st

def google_autocomplete(key phrase: str) -> listing[str]:
    """Get Google autocomplete queries for a seed key phrase

    Args:
        key phrase (str): The seed key phrase

    Returns:
        listing[str]: A listing of the autocomplete queries
    """
    google_autocomplete_api: str = "https://www.google.com/full/search"
    google_autocomplete_params: dict = 
        "q": key phrase,
        "cp": 8,
        "consumer": "gws-wiz",
        "xssi": "t",
        "hl": "en-US"
    

    response = requests.get(google_autocomplete_api, params=google_autocomplete_params)

    list_google_autocomplete_uncleaned: listing[list] = json.masses((response.content material).decode("UTF-8")[5:])[0]
    list_google_autocomplete_cleaned: listing[str] = [
        element[0].exchange('<b>', '').exchange('</b>', '')
        for aspect in list_google_autocomplete_uncleaned
        ]

    return list_google_autocomplete_cleaned

The Streamlit App

Up till now, now we have put in the Streamlit package deal and outlined our perform to get the Google autocomplete queries. Now, let’s create the precise app.

To view the Streamlit app, we have to run the Streamlit with the run streamlit_app.py command within the terminal for operating our app domestically. After you run this command, by going to the http://localhost:8501/ URL, you possibly can view the app.

Sure, it’s clean as a result of we didn’t add any heading, and many others., to it.

Running the Streamlit app from a terminal
Screenshot from writer, October 2022

Add A Heading To The Streamlit App

Let’s add a heading to our app. As you see above, I imported the Streamlit as st.

Now by calling the st.title() perform, we are able to add a heading to the web page with a title model. Let’s say st.title(“It is a subsequent degree search engine optimisation app”).

Do not forget that after enhancing your streamlit_app.py file and saving it, an icon seems within the high proper nook of the web page, and it’s essential to press At all times return to view the app modifications with none web page refresh.

Always return button in the Streamlit appScreenshot from writer, October 2022

Now our app seems to be just like the picture beneath. In case your system theme is darkish, your app is with a darkish theme.

A look at a Streamlit app with headingScreenshot from writer, October 2022

Add Textual content To The Streamlit App

For including a textual content paragraph to the app, it is advisable use the st.write() perform. For instance, st.write(“Make your concepts actual”).

Steamlit appScreenshot from writer, October 2022

Add A Textual content Enter To The Streamlit App

As you noticed within the Google autocomplete perform, there was an argument known as “key phrase”.

This argument should come from the person enter.

To get the person enter, we are able to use a textual content enter discipline in Streamlit. With st.text_input() we are able to add a textual content enter. For instance, st.text_input(“What’s your seed key phrase?”).

Additionally, to be able to use the enter key phrase later to cross to our perform, we should assign it to a variable.

input_google_autocomplete_keyword: str = st.text_input(
    "What's your seed key phrase?")

Now we need to run our app when there may be an enter key phrase. Right here, we use an if assertion to examine if the variable is empty or not.

if input_google_autocomplete_keyword:
    output_list_google_autocomplete: listing[str] = google_autocomplete(
        input_google_autocomplete_keyword)
A look at a Streamlit app with a heading, text, and text inputScreenshot from writer, October 2022

Obtain From The Streamlit App

So, now we have added a heading, a line of textual content, and an enter textual content discipline to get the person seed key phrase.

Now we should execute our written perform and make a obtain button for the person to get the ends in a textual content file.

if output_list_google_autocomplete:
        st.download_button("Obtain the output",
                           ("n").be a part of(output_list_google_autocomplete))
A look at a Streamlit app with a heading, text, text input, and download buttonScreenshot from writer, October 2022

We constructed our easy app! Let’s change the app title and favicon.

Earlier than that, let’s see the Streamlit app part code up till now.

The Streamlit app section codeScreenshot from writer, October 2022

Change The App Title And Favicon

The default title of the app is streamlit_app · Streamlit, and the favicon of the app is the Streamlit icon.

To vary the title and favicon, we should use the st.set_page_config().

Additionally, I want the app structure to be vast (you possibly can take a look at it).

st.set_page_config(
    page_title="Oh My App!",
    page_icon="😎",
    structure="vast"
)
The Streamlit app in the browserScreenshot from writer, October 2022

Set The App’s Default Theme

The app theme is predicated on the person’s system settings, however personally, most occasions, I discover out the sunshine theme has higher distinction – and I don’t need my workforce to place their time into discovering out how you can change the app theme.

To set a default theme for the Streamlit app, first, it’s essential to create a folder, and identify it .streamlit. Inside this folder create a file, and identify it config.toml.

Contained in the config.toml it’s essential to insert the beneath strains to set your app’s default theme.

[theme]
base = "gentle"
The confing.toml file code for customizing the Streamlit app themeScreenshot from writer, October 2022

Authenticating Customers In Streamlit

Think about that after you deploy your app, somebody finds out the app URL and accesses it.

To guard your app, it’s essential to authorize the customers earlier than they’ll use the app – like most SASSs we use day by day.

For a Streamlit app, we are able to use the Streamlit-Authenticator package deal. To put in it, within the terminal positioned in your app folder, kind the pip3 set up streamlit-authenticator command, and import the package deal into your app.

I like to recommend you learn the Streamlit authenticator package deal documentation to get a greater understanding of what’s going on.

import streamlit_authenticator as stauth

Now create a config.yaml file for inserting our customers’ credentials.

credentials:
  usernames:
    firstUser:
      e-mail: firstuser@gmail.com
      identify: The primary username
      password: 12345 # Have to be changed with the hashed password
    secondUser:
      e-mail: seconduser@gmail.com
      identify: The second username
      password: 111213 # Have to be changed with the hashed password
cookie:
  expiry_days: 30
  key: some_signature_key
  identify: some_cookie_name
preauthorized:
  emails:
    - my@gmail.com

As within the package deal doc you possibly can see, now we should hash the passwords with the Hasher modules. I want to open an IPython and run the beneath code line.

hashed_passwords = stauth.Hasher([‘12345’, ‘111213’]).generate()

Creating A Login Widget

Now we should create a login widget the place customers can enter their username, password, after which login into the app.

First, it is advisable set up the PyYAML package deal with the pip3 set up pyyaml command and import it with the import yaml.

Then create an authenticator object, and render the login module.

with open("./config.yaml") as file:
    config = yaml.load(file, Loader=yaml.SafeLoader)

authenticator = stauth.Authenticate(
    config["credentials"],
    config["cookie"]["name"],
    config["cookie"]["key"],
    config["cookie"]["expiry_days"],
    config["preauthorized"]
)

identify, authentication_status, username = authenticator.login("Login", "foremost")
The Streamlit login widgetScreenshot from writer, October 2022

Present The App To Efficiently Logged In Customers

Now we are able to use the authentication_status variable to see the app for our efficiently logged-in customers.

if authentication_status:
    authenticator.logout('Logout', 'foremost')
    # OUR APP CODE COMES HERE
elif authentication_status == False:
    st.error('Username/password is inaccurate')
elif authentication_status == None:
    st.warning('Please enter your username and password')

Deploy The Streamlit App With Docker

Now we’re within the closing step of creating our app.

You should use totally different companies for deploying your app, like AWS, Google Cloud, Azure, Heroku, DigitalOcean, and many others.

Earlier than the Dockerfile, let’s create the necessities.txt file. To take action, we are able to use the pip3 freeze > necessities.txt command.

Streamlit Dockerfile

For deploying our app, I exploit Python 3.9.10.

FROM python:3.9.10
WORKDIR /app
COPY . .
RUN pip3 set up -r necessities.txt
CMD ["streamlit", "run", "streamlit_app.py"]
EXPOSE 8501

Wrap Up

On this tutorial, we noticed how we are able to create a shocking UI with pure Python, and deploy it with Docker.

To study extra about totally different Streamlit widgets, see their well-documented API reference.

Extra assets: 


Featured Picture: Yaran/Shutterstock



What's your reaction?

Leave A Reply

Your email address will not be published. Required fields are marked *