Django技术文档
安装Django
安装python环境并添加到系统环境中
注意:安装的时候尽量避免路径中含有中文
virtualenv虚拟环境的使用
安装virtualenv
pip install virtualenv
创建virtualenv虚拟环境
CMD创建虚拟环境
- cmd进入自己创建的虚拟环境文件夹
- 输入virtualenv 虚拟环境名,回车
Pycharm创建
- 打开Pycharm,选择新建项目,选择Django
- 选择项目文件的路径
- 选择虚拟环境的路径以及python环境的位置
- 最后点击确定即可
运行虚拟环境
Pycharm在建立好项目之后会自动运行虚拟环境
其他软件需要在控制台手动打开
- 进入刚才创建的虚拟环境文件夹
- 进入
Scripts
文件夹 - 输入
activate
即可启动
使用Django
Django框架的流程为:
浏览器发送请求——urls.py路径跳转——views.py处理数据(数据库交互)——templace模板显示结果
Django文件目录介绍:
Demo
——Demo
——__ init__.py 是项目初始化文件,表示当前文件夹是一个包,可以被引用
——settings.py 是项目的配置信息文件,包括数据库配置,静态文件配置以及django依赖的第三方扩展包等
——urls.py路径分配,路径跳转
——asgi.py异步网关协议接口,介于网络服务和python应用之间的标准接口,能够处理多种通用的协议类型,包括http,http2和websocket。
——wsgi.py全称Python Web Server Gateway Interface,指定了web服务器和Python web应用或web框架之间的标准接口,以提高web应用在一系列web服务器间的移植性
——Index 创建的APP,及项目的各个子目录
————migratiions迁移文件文件夹
—————— init.py
——————0001_initial.py迁移文件
————admin.py后台管理文件
————apps.py当前app配置文件
————models.py数据库文件
————tests.py单元测试文件
————urls.py路径文件
————views.py视图文件
————templace模板文件夹
——————index.html模板文件
——static静态文件资源文件
——manage.py整个项目的启动文件
——db.sqlite3自带的数据库配置文件
Django实战
setting.py的介绍
APP定义,因为在我们新创建了APP之后,Django并不知道APP的存在,所以要在这个地方添加APP的名字,让Django能够识别到文件夹
数据库定义,包括数据库类型,数据库名称,用户名,密码,服务器IP以及端口号的设置。
静态文件夹的定义,Django为了更好的降低耦合,将静态文件夹单独提出来,存放在项目中,由于我们要在项目中使用静态文件,所以要在setting.py里面声明静态文件夹的位置。
接下来我们根据框架的流程开始学习
urls.py
路径分为一级路径,二级路径,三级路径……,那么我们该如何去设置路径?
在创建好项目文件的时候,有一个与项目同名的文件夹,其中有一个urls.py文件,也就是和setting.py文件同级目录下的urls.py文件,这个文件是整个项目路径的起点,一级目录也就在这里设置:
path("admin/", admin.site.urls),
其中’admin/’为一级路径,完整的URL为http://127.0.0.1:8000/admin/。后面的admin.site.urls是django自带的admin后台管理模板。
path("index/", include("index.urls"))
其中’index/’为一级路径,完整的URL为http://127.0.0.1:8000/index/。之后的include是URL中最重要的部分之一,它实现了URL的跳转。当然,跳转的前提是必须有index这个APP存在,并且添加到setting.py中。那么当URL中出现index/时候,就会跳转到index文件夹下的urls.py文件中
path("",include("idex.urls"))
这里为空则代表着如果没有一级目录,则当URL为http://127.0.0.1:8000/时,会跳转到index下的urls.py文件中。
之后跳转到index下的urls.py文件之后,则是有关于二级目录的设置:
path("display/", include("indeximg.urls"))
这里display/是二级目录,并且后面还继续跳转到三级目录,也就是indeximg文件夹下的urls.py文件中,操作和上方一级目录到二级目录的跳转方法一致。
path("",views.index)
首先如果要执行views.py中的函数,必须先引用
则from index import views
,注意这里index是当前APP的名字
这里为空,,然后后面是views.index,之前我们说过,在URL跳转到最后一层目录之后,则会执行views.py里面的函数来对数据进行处理,那么这里就是当二级目录为空的时候,则会执行views.py文件里面的index函数。即为http://127.0.0.1:8000/index/时,执行函数中对应的操作。
这就是Django中的URL跳转的方法,通过include跳转到下一个APP中的urls.py和直接执行views.py文件中的函数,我们就能实现整个网站的各种跳转。
views.py
views.py是处理数据,以及与数据库交互的文件,在当urls.py访问views.py时,执行views.py中函数对应的操作。
- 最简单的操作
首先这里定义了一个名字为index的函数,这个函数对应的是当前APP中urls.py中的views.index
。接下来我们来解析一下这个函数: request
:这是我们从浏览器发送给服务器的请求报文,同理服务器会返回给浏览器响应报文,其中包含了用户所有的请求数据。HttpResponse
:给浏览器直接返回数据,这里给浏览器返回了主页两个字
- 使用模板
Django是通过对模板进行渲染然后传递到浏览器并显示。模板之前提到是在模板文件夹中,也就是templace文件夹中。下面解析下这个函数
其中不同的地方是使用了render函数
render函数:结合一个给定的模板和一个 给定的上下文字典, 并返回一个渲染后的HttpResponse对象。 - 这里模板文件为
index.html
- 上下文字典是
{‘title’:”我是标题”}
那么如何要把内容在模板里面显示出来呢,这里我们可以使用模板语言进行输出:
变量相关的使用{{ }}
,逻辑相关的使用{{% %}}
{ % if xxxxx % }
{ % else % }(可选)
{ % endif % }
{ % for xxx in xxx % }
{ % endfor % }
具体的实例请参照:
https://blog.csdn.net/qq_40100127/article/details/80050051
所以我们就可以通过对数据的处理,然后通过字典的方式把数据传到前端页面进行输出。
那么我们知道,一个动态网页是需要与数据库进行交互的,那么我们在views.py文件中怎么去和数据库进行交互呢?
首先,我们要创建一个表,有了表才能进行数据的交互。
我们在每个APP文件中,发现有一个Models.py文件,这个文件就是对数据库中表进行操作的文件。在Django中,每个表都是一个类,所以我们在Models.py中按照类的方式去对表结构进行搭建。
首先,类的名称就是表的名称,之后字段就是下方的几行代码,其中,字段名就是变量名,同时字段类型通过models中的函数去定义,包括字段的一些属性。具体的定义可以参考这个网站:
https://www.cnblogs.com/qttblog/p/8367044.html
那么,光是定义好表是不行的,因为实际上数据库中并没有我们定义的表,那么我们接下来首先是要生成一个迁移文件。
迁移文件是Django与数据库沟通的桥梁,通过这个迁移文件来对数据库表结构进行更改。
在终端输入:python manage.py makemigration
同时大家可以发现,在这个时候,APP文件夹中出现了一个名字为migrations的文件夹,里面存放的就是迁移文件。
之后再通过执行迁移文件,来对数据库进行操作
在终端输入:python manage.py migrate
这个时候,数据表的创建才算完成
之后我们就可以在views.py中对数据库进行读取存储的操作了。
3. 对数据库的操作
- 获取数据
首先因为要涉及到对数据库的读取,所以要先导入数据库文件from .models import *
因为在Django中表是用类进行表示的,所以我们直接用对类的操作来进行数据的获取。这里data = Article.object.all()表示的是获取数据表Aritcle中的所有数据,之后再通过字典的形式传递到模板中。
那么我们在模板中药怎么输出这些数据呢?
因为Django在读取数据的时候是以QuerySet形式获取的,这是一个可迭代对象,所以我们可以通过迭代传递过去的数据来进行数据的获取
在模板中
因为这里i的数据是表中的每一条记录,而title是字段名,所以可以通过i.title的格式来获取值。
- 存储数据
有读取,肯定就有存储,在网页中经常会有表单,那么表单所填写的内容就可以存放到数据库中。那么我们要怎么进行存储?
首先是先做好一个表单,这个表单提交数据到views.py中,然后进行存储。
这里我们做一个实例:
method表示是以什么方法进行提交,action表示提交给哪个URL,也就是在urls.py文件里面定义的path(“text/”,views.text)
表单的数据将会提交到这个地方,那么我们如何获取这个表单的数据呢?
首先,前面说到,request里面包含了用户请求的数据,其中就有表单提交的数据,所以我们可以使用request.POST.get(“控件名”)来获取数据。这里因为form表单提交是以POST方式进行提交的,所以这里用POST,后面的get是获取值,控件名是在html中控件的name属性,那么现在在获取到数据后,我们要怎样存储进数据库?
我们可以直接构建一个字段表,首先是要声明一个变量名,然后是表名,以及字段对应的值。之后我们在对这串数据进行一个保存操作,也就是data.save()
- templace
模板文件是一个自定义好的页面,主要的内容是页面相同的部分,这个可以减少我们的代码量,那么我们该怎么使用模板文件呢?
首先是创建模板文件,因为是相同的部分,所以在不同的地方我们需要设置一个范围,让其他使用这个模板文件的网页能够在这个范围里面填充自己的内容。
首先是第一行的内容{% load static %}
,这个是在这个页面中引入静态文件的路径,由于在Django中,所有的静态文件资源都是统一放在static目录下的,所以我们在模板文件中就可以直接引用进来,这样在其他的html文件中就可以不用再次引用。然后是关键点,即
{% block xxx %}
{% endblock %}
这个就是模板文件的不同之处,如果其他页面在引用了这个模板文件之后,那么只需要在页面中添加上面的两行代码,然后在里面书写其他的内容。但是要保证代码的正确。
当然,模板文件中也可以使用模板语言,可以进行遍历,取值等操作。
Django的基础教程就讲到这里,其他更加深入的内容需要大家更加全面了解框架之后才能有所收获。希望大家不会的多多交流,多多去看网上的资料,搭建出一个完美的网站 !!!
Django技术文档相关推荐
- [技术文档] 一劳永逸,用USB设备制作多系统引导
2019独角兽企业重金招聘Python工程师标准>>> [技术文档] 一劳永逸,用USB设备制作多系统引导 [复制链接] binghe27 艺有所成 当前离线 主题 8 UID ...
- Django H2 文档查看
http://python.usyiyi.cn/translate/django_182/intro/whatsnext.html 文档的组成 文档是如何更新的 最新的文档在下面 https://do ...
- 不写技术文档是个什么梗
写文档在工作中很常见了,正规的公司都有文档,除非是很简单的东西. 文档用来给新人或不熟悉的人的看,出需求也要文档.只凭笔在本子上划几下不能让人懂. 凡是稍微复杂的东西一定用文档梳理流程,有的还有流程图 ...
- 做一个像Keras在线技术文档(Sphinx + GitHub + Read the Docs)
之前看到Keras的中文文档十分心动也想自己做一个,最终被我做成了.这里写一下制作流程. 制作效果感觉还是不错的 链接:https://opencv-learning.readthedocs.io/z ...
- 代码统计工具1.1版本技术文档
代码统计工具1.1版本技术文档 说明:主要记录自己在做这个项目的过程中用到的方法和相关技术 1.首先面临的问题就是怎样选择一个目录,网上搜索了一下,下面是解决方案(用到目录对话框) (1)从默认的磁盘 ...
- virtualbox中文技术文档_随笔--西门子STEP7中如何寻找技术文档
西门子STEP7软件支持的编程语言除了常用的LAD/FBD/STL,还有SCL/GRAPH等,应该说除了LAD/STL之外,SCL和GRAPH也是比较常用的,至少对我个人来说是这样,但是每种指令在不同 ...
- SLAM学习--视觉slam学习教材推荐(附相关技术文档下载链接)
(理论上看完前三本,足够掌握视觉slam的所有理论知识,实践部分参考各种开源代码) 一.<视觉slam十四讲>,高翔,清华大学出版社,(目前已出第二版,优先推荐) 以上教材,其实是基于国外 ...
- 【资源推荐】良心之作!超过 10000+ 的互联网团队正在使用的在线 API 文档、技术文档工具...
搞开发的同学都知道一个好的 API 文档是有多重要! 每当接手一个别人开发好的项目,看着那些没有注释的代码,真的头大. 程序员都很希望别人能写技术文档,因为可以提高自己开发的效率,而往往自己却很不希望 ...
- VuePress 手摸手教你搭建一个类Vue文档风格的技术文档/博客
前言: VuePress是尤大为了支持 Vue 及其子项目的文档需求而写的一个项目,VuePress界面十分简洁,并且非常容易上手,一个小时就可以将项目架构搭好.现在已经有很多这种类型的文档,如果你有 ...
- 小明分享|sigmstar SSD201/SSD202 针对MIPI的LCD屏配置操作说明分享,更多Sigmastar相关技术文档及沟通讨论,可以给小明留言,小明邀请你进入我们的技术沟通群
小明会定期分享SigmastarSSD201/202相关芯片技术文档!我们也有一个Sigmastar技术沟通群聊!有感兴趣的开发小伙伴也可以留言给小明,小明邀请你进入! SSD20X 平 台 LCD ...
最新文章
- php留言板只能留言一次,php如何实现留言板修改留言
- goods.java_javaweb网上书城项目 1.用户管理:注册会员 - 下载 - 搜珍网
- 011——数组(十一)array_merge array_merge_recursive array_change_key_case
- leetcode1451. 重新排列句子中的单词(排序)
- 【GoWeb开发实战】Cookie
- 树上倍增求LCA详解
- LeetCode —— 897. 递增顺序查找树(Python)
- oracle 批量插入 mysql 区别,Mysql与Oracle中批量插入和更新区别
- SLAM学习笔记-------------(11)回环检测
- Spring Boot2.0之热部署原理
- 软件测试按照各种方式分类
- LINUX打包并下载到本地
- 什么是类?什么是对象?类与对象之间是什么关系?类的特性有哪些?
- win7一直弹计算机,Win7电脑总是自动弹出拨号连接怎么办 Win7总是弹出拨号连接对话框的解决办法(两种)...
- python中数组常用的统计方法
- docker镜像与容器基本的基本操作
- 398、Java框架52 -【Hibernate - 分页、两种获取方式】 2020.10.27
- EasyExcel 使用Converter 转换注入时报nullPoint异常
- 用 顶部tab栏 做排班表
- 【光纤通信课程-每周一练(含答案)】第九周—波分复用系统