Django开发树莓派智能教室应用

树莓派智能教室应用开发

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值