Skip to content

YouTube : Web Development with Python Tutorial – Flask & Dynamic Database-Driven Web Apps

License

Notifications You must be signed in to change notification settings

wanyun-yang-2002/YwY-careers-website

Repository files navigation

招聘网站


Youtube: Web Development with Python Tutorial – Flask & Dynamic Database-Driven Web Apps


$$ 技术栈 \begin{cases} 前端:\text{HTML + CSS + BootStrap} \\ 后端:\text{Python + Flask + MySQL + planetscale} \end{cases} $$


安装Flask

下载安装Flask

  1. 创建环境
    > mkdir myproject
    > cd myproject
    > py -3 -m venv venv
  2. 激活环境
    > venv\Scripts\activate
  3. 安装Flask
    $ pip install Flask
  4. 运行:
    python app.py
  5. app.py格式
    app = Flask(__name__)
    
    @app.route("/...")                     # 路径 url(网站名/...)
    def hello():                           # 名称 函数名
    return render_template("home.html")    # 页面展示 选择展示哪个html文件

前端页面

  1. 制作简单的前端页面。
    • 图片网站:unsplash
    • 开源前端框架:BootStrap
    • 职位信息及其他文字内容:ChatGPT生成 + 自定义
  2. 遇到问题:按照教程代码,无法把Apply的button放到最右边,查看官方文档后找到解决办法
    <div class="row">
       <!-- 左边 -->
       <div class="col-auto me-auto">.col-auto .me-auto</div>
       <!-- 右边 -->
       <div class="col-auto">.col-auto</div>
    </div>
  3. Flask框架下,在前端页面中使用代码
    {{% 代码 %}}
    
    # Example
    # for 语句
    {% for job in jobs %}
       {% include 'jobitem.html' %}
    {% endfor %}

部署网站

  1. 使用 Render 将网站部署到云端
  2. 购买一个域名,把部署在云端的网站和域名关联起来
    • 看懂了,但没钱,没做这一步

数据库

实现功能:将职位信息(职位名称、工作地点等)存储在数据库中,能够从数据库中读取数据,动态地展示在前端页面上
在线数据库网站:https://planetscale.com/
下载MySQL Workbench:https://dev.mysql.com/downloads/workbench/

  1. 通过在线数据库中新建数据库,再将MySQL Workbench与在线数据库建立连接
  2. MySQL Workbench中,可以通过SQL语句进行数据插入等操作,也可以直接向表中输入数据
  3. 新建文件database.py
    • 安装 sqlalchemy
      pip install sqlalchemy 
      #建议使用清华源镜像
      pip install sqlalchemy -i https://pypi.tuna.tsinghua.edu.cn/simple 
    • py文件连接数据库
       from sqlalchemy import create_engine
       engine = create_engine("mysql+pymysql://username:password@host/database?charset=utf8mb4")
  4. 遇到问题:把sqlalchemy row变成python中的字典形式
    看着教程直接用的dict(),自己运行时却不断报错,经google搜索,在stackoverflow上看到了如下回答:
    for row in resultproxy:
       row_as_dict = row._mapping  # SQLAlchemy 1.4 and greater
       # row_as_dict = dict(row)  # SQLAlchemy 1.3 and earlier
    原来是不同版本的SQLAlchemy对应的方法不一样,于是采用row._mapping,成功运行!
  5. 遇到问题:隐私安全保护
    由于教程是在在线IDE编写代码的,所以可以直接创建一个系统环境变量(system environment variables)里的 secrets ,用于保护连接数据库时的账号密码。 我直接用的pycharm,这一步暂时不知道怎么做,所以跳过了这一步。

后续 - 教程之外

  1. 美化申请表页面
  2. 待续...

About

YouTube : Web Development with Python Tutorial – Flask & Dynamic Database-Driven Web Apps

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published