树莓派智能教室应用开发
WEB编程大作业2
使用Django框架和jQuery开发
技术点
Django的项目结构, 优劣势与定位
Django网页模板的语法
Django内置CSRF中间件与防御网络攻击的原理
Django内置ORM模型的语法
Django中如何使用请求中的Session完成用户登录和用户识别
Django开发流程
设计项目结构, 生成项目
django-admin指令生成Django项目文件夹, 并手动添加需要用到的文件
django-admin指令生成子应用目录
编写Django网页模板, 定义网页链接和视窗的关系
编写views.py和urls.py的内容
编写templates中的网页模板
编写数据库ORM模型
设置ORM模型的引擎
使用manage.py将模型迁移到数据库应用
部署到生产环境
生成Django项目文件夹(开发流程)
第一步, 使用{pip install django}安装django与其依赖库
第二步, 搭建项目脚手架
选择一个文件夹作为项目文件夹的父文件夹
命令行{cd <文件路径>}进入该文件夹下
{django-adminstartproject<项目名称>}
第三步,建立子应用
命令行{cd <文件路径>}进入项目文件夹下
{django-admin startapp <子应用名称>}
在settings.py中找到{INSTALLED_APPS=[<一些字符串>]}, 添加刚才创建的子应用名称为其中的元素
最终生成的目录:
项目名为Rasp_Server
子应用为db, 内容未展示
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tB9Vttot-1625216482606)(C:/Users/YangTianJi/Desktop/images/image-20210702154104963.png)]
Django的项目结构, 优劣势与定位(技术点)
项目结构: MVC(Model View Controller)分离的模式
- M: Model
- 业务模型使用内置的<ORM模型>
- V: View
- 通过<views.py>定义视窗之间的跳转, 并向其输入数据
- <网页模板(templates)>完成渲染(可以结合前端框架使用)
- C: Controller
- 通过<url.py>定义哪些网址将被分配给哪些视窗
- 通过专用的静态文件路由传递<静态文件(static file)>注意此处的静态文件与静态网页并非相同概念
运行时: 同步单线程
- 内置的runserver指令, 并发能力差, IO密集时容易失去响应
- 部署服务器时改用多线程的Web服务来运行(uwsgi, nginx), 可以缓解这个问题
安全性: 良好
- 内置了多种验证方法, 并限制跨域访问, 防止了相关的攻击.
Django不是服务器开发框架, 而是后端Web应用开发框架
- 开发流程采取网络服务与后端应用开发分离的方式
- 专精于静态大容量网页和数据块的生成, 将动态网页交给前端
Django网页模板的语法(技术点)
Django网页模板是在后端服务器当中直接渲染好的
交给前端的是已经替换好数据的完整网页(或者网页中的一些组件)
由于替换是通过python脚本直接执行的, 它的速度非常快
后端给它塞数据的代码:
from django.shortcuts import * #'*'表示所有shortcuts中的组件
def send_fakestudentlist(req, *args, **kwargs):
if req.method != "GET":
return HttpResponse("")
context = {
}
def fakestudent(i):
x = object()
x.id = i
x.name = "".join(random.sample("abcdefg"), 10)
return x
context["students"] = [fakestudent(i) for i in range(0, 100)]
context["classid"] = 1
return render(req, "fakestudentlist.html", context)
网页模板部分:
<table id="studentlist">
{% for item in students %}
<tr><td>
<span class="'{
{item.id}}'"> {
{item.name}} </span>
</td></tr>
{% endfor %}
</table>
<script>
var whichclass = "'{
{classid}}'";
</script>
编写Django网页模板(开发流程)
在项目文件夹下新建文件夹{templates}(用来存放模板网页)
在项目文件夹下打开与项目名称同名的文件夹新建文件{views.py}(用来安排视窗和数据)
在项目文件夹下新建文件夹{static}(用来存放图片, javascript脚本等静态文件)
在项目文件夹下的settings.py中{import os}找到TEMPLATES项, 修改TEMPLATES项中的DIRS项, 结果如下一页所示
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [os.path.join(BASE_DIR, "templates")],
"APP_DIRS": True,
"OPTIONS": {
"context_processors": [
"django.template.context_processors.debug",
"django.template.context_processors.request",
"django.contrib.auth.context_processors.auth",
"django.contri