DJango 学习(3)—— django引入:动静态网页

本文介绍了Django中动静态网页的区别,讲解了如何借助wsgiref模块实现动态网页,并探讨了模板语法Jinja 2的相关内容,最后展示了运行结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DJango 学习(3)—— django引入:动静态网页

动静态网页区别

静态网页
	网页上的数据是直接写死的 万年不变

动态网页
	数据是实时获取的
	eg. 后端获取当前时间展示到前端html页面上
		后端数据从数据库获取展示到 html 页面上

借助于 wsgiref 模块实现动态网页

文件夹目录

在这里插入图片描述

main.py

import urls
from views import *
from wsgiref.simple_server import make_server

def run(env, response):
    """
    :param env: 请求相关的所有数据
    :param response: 响应相关的所有数据
    :return: 返回给浏览器的数据
    """

    # print(env) # 字典 wsgiref 模块处理了 http 格式的数据,封装成了字典更加方便操作

    response("200 OK", []) # 响应首行 响应头

    current_path = env.get("PATH_INFO")

    # if current_path == "/index":
    #     return [b"index"]
    # elif current_path == "/login":
    #     return [b"login"]
    #
    # return [b"404 ERROR"]

    # 定义一个变量存储匹配到的函数名
    func = None

    for url in urls.urls: # url 是 元组
        if url[0] == current_path:
            # 匹配到的 url 函数赋值给 func
            func = url[1]
            break # 匹配到一个后,应该立马结束 for 循环

    # 判断 func 是否有值
    if func:
        res = func(env)
    else:
        res = error(env)

    return [res.encode("utf-8")]

if __name__ == "__main__":
### 使用 Django、MySQL 和 Vue 构建有声图书网站的最佳实践 #### 项目初始化与环境配置 为了启动一个基于Django和Vue的有声图书网站,需先设置好开发环境。这包括但不限于安装Python解释器以及确保所有必要的Django依赖库已就绪[^3]。 对于数据库的选择,在此案例中选用了MySQL作为后端存储解决方案,并通过Navicat这类工具来进行管理和维护工作。此外,还需注意版本兼容性问题;例如,文中提到使用了特定版本组合——Python 3.7.7搭配MySQL 5.7。 #### 后端开发 (Django) ##### 创建并配置Django应用 一旦环境准备完毕,则可着手建立新的Django工程及其内部的应用程序组件。考虑到项目的特殊需求(即提供在线听书服务),应当定义相应的数据模型来表示书籍信息、章节详情等内容实体。这些都将被保存至预先设定好的MySQL实例之中。 ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) class Chapter(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE) content_url = models.URLField() # 假设音频文件托管于外部CDN或云盘 ``` 上述代码片段展示了两个简单的ORM类映射关系,用于描述一本书籍与其所属各章节之间的关联形式。 ##### API接口设计 为了让前端能够顺利获取到所需的数据资源,必须精心规划RESTful风格的服务端点。借助`django-rest-framework`这样的第三方包可以帮助简化这一过程,从而使得开发者可以专注于业务逻辑本身而非底层通信细节。 #### 前端开发 (Vue.js) ##### 用户界面构建 在完成了基础架构之后,接下来就是打造直观易用的操作面板供访客浏览及收听电子读物之用了。这里推荐运用现代JavaScript框架之一—Vue.js 来完成这项任务。其声明式的语法糖特性极大地提高了编码效率的同时也降低了学习曲线[^4]。 利用HTML/CSS/JS编写静态页面元素,再配合Vue指令实现动态效果,比如加载进度条显示或是播放控制按钮等功能部件。与此同时,还可以考虑引入Element UI等UI库进一步美化整体外观样式。 ##### 客户端请求处理 最后一步便是让前后两端之间建立起有效的联系渠道。通常来说会采用AJAX异步调用来发起HTTP GET/POST 请求并与远端API进行交互。当然也可以探索WebSocket长连接机制以支持更加复杂的场景需求,不过对于本项目而言前者已经足够胜任了。 ```javascript axios.get('/api/books/') .then(response => { this.books = response.data; }) .catch(error => console.log(error)); ``` 这段脚本示范了怎样从服务器拉取最新发布的书籍列表并将结果显示给当前用户查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值