Python3开发一个web项目

2021-12-01 08:57:50 浏览数 (3)

准备工作

代码语言:javascript复制
# 安装 Web 框架 
pip install Django
# 创建一个项目
python  django-admin.py startproject itstyle
# 切换目录
cd itstyle
 # 创建  App
python manage.py startapp novel

一般一个项目有多个app, 当然通用的app也可以在多个项目中使用,然后启动服务:

代码语言:javascript复制
# 默认端口是8000
python manage.py runserver

如果提示端口被占用,可以用其它端口:

代码语言:javascript复制
python manage.py runserver 8001
python manage.py runserver 8002

项目结构

win下使用命令 tree /F > 项目结构图.txt ,如下:

代码语言:javascript复制
│  manage.py
│  
├─novel
│  │  settings.py # 基础配置
│  │  urls.py     # URL映射
│  │  wsgi.py
│  │  __init__.py
│  │  
│          
├─templates # 相关页面
│      novel.html # 章节
│      novel_list.html # 小说首页
│      
├─utils
│  │  dbMysqlConfig.cnf # 数据库配置参数
│  │  encoder.py # 编码类
│  │  mysql_DBUtils.py # 数据库连接池
│          
└─view
    │  index.py   # 后台业务        

要点备注

RESTful 风格

控制器

代码语言:javascript复制
from django.conf.urls import url
from django.urls import path
from view import index

urlpatterns = [
    # 首页
    path('', index.main),  # new
    # 章节页面 正则匹配 
    path('chapter/<int:novel_id>/', index.chapter),    # new
]

代码实现

代码语言:javascript复制
# 此处 novel_id 对应 urls.py 中的 <int:novel_id>
# 你可以访问:http://localhost:8000/chapter/1/
def chapter(request, novel_id):
    sql = "SELECT title,content FROM novel where id = %(id)s;"
    param = {"id": novel_id}
    result = mysql.getOne(sql, param)
    # 中文编码问题,由于查询出来的额中文是字节码,这里需要转换一下
    result['title'] = result['title'].decode('utf-8')
    result['content'] = result['content'].decode('utf-8')
    context = {'novel': result}
    return render(request, 'novel.html', context)

列表展示

基于后端返回的数据,在前台进行展示,这里你可以把它想象成Java中的Struts2标签或者JSTL标签,当然也有点Vue的意思:

代码语言:javascript复制
{% for novel in novel_list %}
    <a href="/chapter/{{novel.id}} "><li>{{ novel.title }}</li></a>

{% endfor %}

0 人点赞