TV 채널 웹사이트: 환경 변수 및 데이터베이스

GitHub: https://github.com/Sokhavuth/TV-Channel
베르셀: https://khmerweb-tv-channel.vercel.app/

프로젝트에서 환경 변수를 생성하고 사용하려면 예를 들어 python-dotenv와 같은 패키지를 설치해야 합니다.


pip install python-dotenv


데이터베이스의 경우 MongoDB Atlas를 사용할 수 있습니다. 이 최신 데이터베이스에 대한 계정이 이미 있는 경우 이 데이터베이스의 URL에 대한 환경 변수를 만들고 환경 변수를 사용하여 연결할 수 있습니다.

그러나 Python이 MongoDB Atlas와 원활하게 작동하려면 pymongo 패키지를 설치해야 합니다.


pip install pymongo


사용자 세션을 생성하고 저장하려면 Redis Enterprise 플랫폼으로 계정을 생성하고 Python용 Redis 패키지를 설치하여 Redis 데이터베이스를 사용할 수 있습니다.


pip install redis


한 가지 더, 사용자 인증을 위해 PyJWT 패키지를 설치하여 JWT(JSON Web Token)를 사용할 수 있습니다.


pip install PyJWT


모든 것이 설치되면 구성 파일을 생성하여 데이터베이스 연결을 구성하고 설정할 수 있습니다.


# config.py
# pip install python-dotenv
# pip install PyJWT
# pip install pymongo
# pip install redis


def settings():
    setup = {
        "siteTitle": "TV Channel",
        "pageTitle": "",
    }

    return setup


import os
from dotenv import load_dotenv
load_dotenv()
secret_key = os.getenv("SECRET_KEY")


import pymongo
client = pymongo.MongoClient(os.getenv("DATABASE_URI"))
db = client[os.getenv("DB_NAME")]


import redis
redis = redis.Redis(
    host = os.getenv("REDIS_URI"),
    port = int(os.getenv("REDIS_PORT")), 
    password = os.getenv("REDIS_PASSWORD")
)


configure = { 
    "settings": settings, 
    "secret_key": secret_key, 
    "db": db, 
    "redis": redis,
}



# .env

SECRET_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DATABASE_URI=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DB_NAME=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_URI=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_PASSWORD=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
REDIS_PORT=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


다른 모듈에서 위 파일의 구성을 가져올 수 있습니다. 그러나 가장 좋은 방법은 기본 응용 프로그램 개체에 구성 개체를 저장하는 것입니다. 이렇게 하면 요청 개체를 통해 모든 모듈에서 이 구성을 사용할 수 있습니다.


# index.py

from bottle import static_file, get
from routes.frontend import index
import config


app = index.appIndex
app.config["myapp.config"] = config.configure

@app.get('/static/<filepath:path>')
def staticFile(filepath):
    return static_file(filepath, root="public")


###################################################################
import socket
host = socket.getfqdn()    
addr = socket.gethostbyname(host)
if(addr == '127.0.1.1'):
    app.run(host='localhost', port=8000, debug=True, reloader=True)

###################################################################



# routes/frontend/index.py

from bottle import Bottle, template, get, request
from copy import deepcopy


appIndex = Bottle()

@appIndex.get('/')
def indexHandler():
    config = request.app.config["myapp.config"]
    settings = deepcopy(config["settings"])
    setup = settings()
    setup["message"] = "Hello World!"

    return template('base', data=setup)




<!--views/base.tpl-->

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8"/>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <title>{{ data["siteTitle"] }}</title>
        <script src="/static/scripts/jquery.js"></script>
        <link href="/static/images/sitelogo.png" rel="icon" />
        <link href="/static/fonts/setup.css" rel="stylesheet" />
        <link href="/static/styles/base.css" rel="stylesheet" />
    </head>
    <body>
        {{ data["message"] }}
    </body>
</html>

좋은 웹페이지 즐겨찾기