
Django学习笔记-1
Django学习笔记
参考书籍:《Django 3 By Example Build powerful and reliable Python web applications from scratch》
Django 基础教程 by Leif Azzopardi David Maxwell (z-lib.org)(中译版)
为什么要学Django?
Django是一个强大的Python Web开发的后端框架,优势在于简单,简洁,适合任何人上手,随着你深入学习Django,你会对此深有体会
下面,我们开始学习,记得坚持
第一个Django项目:startproject
使用Django我们需要先下载并配置python
参考:
https://zhuanlan.zhihu.com/p/344887837
https://blog.csdn.net/qq_44214671/article/details/113469811
下载好后,建好项目的文件夹,在该文件夹终端输入:
(注意Python版本和Django版本要兼容)
1 | pip install django |
并通过
1 | (base) (Django_environment) PS D:\DjangoProject\Django_environment\Scripts> python |
来检查django是否安装好,可以看到我的环境是我的环境是python3.11+django4.2.7
选择安装内容:虚拟环境
虚拟环境可以帮助我们进行版本管理与维护,不需要的可以跳过这段
通过
1 | python3.11 venv -m Django_environment(虚拟环境文件夹名称,其他也可以) |
创建虚拟环境后,我们可以通过激活该环境来使用其中的 Python 版本和包。在不同的操作系统上,激活虚拟环境的命令也略有不同。在 Windows 上,可以运行以下命令:
1 | Django_environment(刚才创建的文件夹)\Scripts\activate |
这里也可以使用virtualenv,具体参考https://www.simononsoftware.com/virtualenv-tutorial/
这样我们就进入了虚拟环境
创建项目
在项目所在文件夹,输入
1 | django-admin startproject tango_with_django_project |
建立了第一个文件,django-admin startproject是创建Django项目的命令,后面的是项目名称
创建完后,项目目录中有个名为 manage.py 的文件,在开发过程中时常用到。它提供了一系列维护 Django 项目的命令,例如通过它可以运行内置的 Django 开发服务器,可以测试应用,还可以运行多个数据库命令。几乎每个 Django 命令都要调用这个脚本。
在另一个文件夹(即项目代码文件夹)下,有这么几个文件:
- init.py:一个空 Python 脚本,存在的目的是告诉 Python 解释器,这个目录是一个Python包
- settings.py:存放 Django 项目的所有配置
- urls.py:存放项目的 URL 模式
- wsgi.py:用于运行开发服务器和把项目部署到生产环境的一个 Python 脚本。
执行指令,来看一下本地的Django轻量级服务器是什么样的1
python manage.py runserver
这里你可能会遇到报错,但没关系,跟着提示的指令,运行它提供的命令,从而应用迁移(跟数据库有关,这里我们暂且不关注)
python manage.py migration
点开返回的地址+端口
看到小火箭了吗?
你也可以通过一些指令使同一局域网或者远程的同伴一起来观看
startapp
运行命令
1 | python manage.py startapp rango |
startapp 目录在项目的根目录(也就是manage.py所在的目录)中创建一个新目录,这个app名为 rango,其中包含一些 Python 脚本
- init.py:与前面那个的作用完全一样
- admin.py:注册模型,让 Django 为你创建管理界面
- apps.py:当前应用的配置
- models.py:存放应用的数据模型,即数据的实体及其之间的关系
- tests.py:存放测试应用代码的函数
- views.py:存放处理请求并返回响应的函数
- migrations 目录:存放与模型有关的数据库信息
views.py 和 models.py 是任何应用中都有的两个文件,是 Django 所采用的设计模式”模型-视图-模板“的主要部分。
为了让Django项目知道这个app的存在,这里在startproject命令创造的那个子文件夹的setting.py中修改
1 | INSTALLED_APPS = [ |
当然,Django是个非常人性化的框架,有时候也会自动追加到INSTALLED_APPS中,这时候就不必手动了
编写视图
视图有模型和模板,这里我们先尝试用视图返回一些简单文本
1 | #edit in rango/views.py |
这里index,about两个函数分别返回两个HttpResponse对象,里面包含一个指向某一页面的链接
那么,如何实现文本返回呢?或者说如何触发他们?(类似于Qt的信号槽和JS的Listener)
1 | #edit in project/urls.py |
在rango
1 | #edit in rango/urls.py |
这两段代码实现了这一功能,包括:
- 利用url统一资源定位符进行视图管理,在第一段代码中,我们用urlpatterns中的path约束了admin开头的,跳转到admin.site.urls;而rango开头的统一由rango.urls管理(即是include(‘rango.urls’)**)
- 触发views.py视图中的函数,第二段代码中以rango/为结尾的调用views.index函数,以rango/about结尾的调用views.about函数