概述
工作遇到困境,现在下班全力学习Python,对于Django一直没有系统学习,结合慕课网上教育平台项目进行深入学习。
梳理响应流程Day1
通过一个留言板的简单html文件进行Django响应http请求的流程梳理。首先是需要搭建项目结构,一开始的 django-admin startproject
建立项目,然后python manage.py startapp
建立应用。然后就是settings的设置,主要分为数据库、templates与static的设置。PS:Django与MySQL连接必须要有驱动程序,需要下载mysql-python,这个思想很重要,在计算机中连接不同的软件或者硬件,是不可能直接连接的,需要有驱动程序的存在。
定义模型
继续进行编写的是留言的数据库模型,在项目app的models.py文件中编辑。定义模型前,要确定定义哪些字段,然后根据实际情况,对于每种字段选择合适的字段类型。更重要的是有的字段需要有max_length的属性,而有的字段没有。
Meta
对于模型类下面的Meta设置,此处较为模糊,理解为对于model本身生成的表进行设置,例如排序规则等。
Day2
昨晚最后出现了bug,今天下载之前提交的源码,绕开了bug。继续昨天的留言板小功能。在项目app中的views.py中定义了试图函数,通过实例化模型类,可以进行ORM数据库操作,在函数内部写入新的数据到书库中。
网页表单数据与数据库交互
由此引申开来,在浏览器打开表单提交页面时,在给定空行填写信息,然后点击底部的提交,如何确定让用户填写的信息被视图函数处理,从而写入数据库中呢?
首先需要的是对表单提交页面html源码的设置,在<form>代码</form>中,<input ... />会自动将前台用户输入的数据传到后台,但是要传到后台哪里呢?这就需要给action属性赋值,传入的参数是url,因为url与视图函数的映射已经在urls.py中设置好了,所以input可以将数据最终传到对应的视图函数进行处理。
<form action="/form/" method="post" class="smart-green">
省略
{% csrf_token %}
</form>
同时需要加上 {% csrf_token %},防止跨站请求伪造,不然会报错。
前端传入数据到后台后,后台的视图函数,需要对传入的数据进行处理和保存,才能写入数据库。其中前台传入的数据可以认为保存在POST请求中。
后台数据传入前端
上面谈到了如何将表单页面用户输入的数据传到后台进行处理,从而写入数据库。现在讲讲将后台数据库中数据传到前台页面。
首先需要在视图函数中,获取数据库数据,对数据库数据进行处理,接着,将处理后的数据传入render()函数。
注意传入render()函数中参数的格式,为字典格式
最后一步是在html中<input>标签有一个value属性,给该属性赋值,就能显示,后台传入的数据。同样,注意value赋值的参数格式,一对双花括号。
最后的效果图如下: