三阶:Django - Redis - Ajax
第一章 Django
一、Django 基础
1. 基础
Django是一个开源的、重量级的WEB开发框架。
Django的官网: https://www.djangoproject.com
2. 安装与卸载 Django
 
Django目前最新的版本为4.2,教学环境使用3.2
2.1 在线安装
sudo pip3 install django==版本号
说明:上述命令中版本号可以省略,如果省略的话,则安装最新的版本。
2.2 离线安装
tar -zxvf Django-3.2.20.tar.gz
cd Django-3.2.20
sudo python3 setup.py install
2.3 查看Django版本
 
python3 -m django --version
2.4 卸载Django
 
sudo pip3 uninstall django
二、创建项目
1. 创建项目
在Django中创建项目分为以下三步:
第一步:创建项目,其命令如下:
django-admin startproject helloDjango
其中:
- django-admin是- Django的命令行管理工具,用于对- Django项目执行某些命令操作。
- helloDjango是项目的名称,只要为合法的名称即可。
第二步:启动项目,命令如下:
# 切换到项目目录内
cd helloDjango#运行项目
python3 manage.py runserver
第三步:访问项目
启动浏览器,然后在地址栏输入http://127.0.0.1:8000
2. Django项目的目录结构
 
创建Django项目后,其目录结构如下:
helloDjango/
├── db.sqlite3
├── helloDjango
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py
这些目录和文件的作用是:
-  最外层的 helloDjango目录是项目的根目录,也是项目的容器
-  manage.py是一个管理Django项目的命令行工具,其基本用法是:python3 manage.py subcommandsubcommand包括:- runserver [addport],启动用于开发的轻量级的- WEB服务器
 常用的端口号: http协议 80MySQL的端口号 3306FTP协议 21- startapp,在当前目录或指定目录中创建应用
 
-  内层的 helloDjango目录包含项目文件,它是一个纯Python包。
-  helloDjango/settings.py是Django项目的配置文件
-  helloDjango/urls.py,URL调度器(也称为路由配置文件)
-  helloDjango/wsgi.py,运行在WSGI兼容的WEB服务器上的入口
3. Django配置
 
Django的配置信息存储在settings.py文件中。
# 当前项目的绝对路径
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))# 密钥
SECRET_KEY = 'd!9((sy&ge3!=u0zc$u_#ba@ok1=%2pg+xnws2=t+c@s_7-(6c'# 是否开启调试模式,建议:在开发环境开启调试模式,生产环境关闭
DEBUG = True# 已安装并启用的应用程序(Application)列表
INSTALLED_APPS = [ ]# 已安装的中间件(Middleware)列表
MIDDLEWARE = []# 根 URL 调度器的完整路径
ROOT_URLCONF = `helloDjango.urls`# 模板的配置
TEMPLATES = []# 数据库配置
DATABASES = []# 语言代码
LANGUAGE_CODE = 'zh-Hans'# 时区
TIME_ZONE = 'Asia/Shanghai'三、URL调度器/URL路由
 
为了给一个应用程序设计URL,需要创建一个Python模块,通常被称为URLConf( URL configuration,URL配置)。其作用是包含 URL 模式到Python函数(称为视图函数)的映射关系。
URL路由三部曲:第一步:先在
urls.py中定义路由,并且指定视图函数第二步:定义路由需要访问的
Python函数(视图函数)第三步:通过浏览器进行访问
HttpResponse对象位于django.http模块内
from django.http import HttpResponse
urls.py的代码如下:
from django.contrib import admin
from django.urls import pathfrom django.http import HttpResponsedef hello(request):return HttpResponse('<h1>Hello呀</h1>')urlpatterns = [path('admin/', admin.site.urls),path('hello/',hello),
]
此时即可以通过http://127.0.0.1:8000/hello进行访问
1. path()函数
 
path() 函数的作用是返回一个元素,以便包含在urlpatterns中,该函数位于django.urls模块内,其语法结构是:
path(route,view,kwargs=None,name=None)
-  route参数是一个匹配URL规则的字符串,当Django在处理请求时,它会从urlpatterns的第一项开始,按顺序依次匹配列表中的项,直到找到为止。匹配的原则是:匹配即停止
-  view参数是一个视图函数的名称,视图函数用于处理用户的请求,并且返回响应。该视图函数必须将HttpRequest对象作为第一个参数,参数建议以request命名,其语法结构是:def view_function_name(request[,argument[,...]]):......说明: - request代表- HTTP请求对象
- argument代表可选参数,表示的的是从- URL中传递的参数
 
-  kwargs代表向模板传递的参数,必须在字典(dict)
-  name代表为url命名,以便Django在任意地方可以唯一引用它
2. 路径转换器
Django中的路径转换器用于捕获URL模式中特定部分的值,并将其作为参数传递给视图函数。路径转换器包括以下几种:


-  整数,匹配 0及其他正整数,返回int<int:parameter_name>,如:# urls.py中的代码def article(request,id):return HttpResponse('文章详情')urlpatterns = [path('article/<int:id>',article) ]
-  字符串,匹配除了 /之外的任何非空字符串,直到遇到下一个斜线为止<str:parameter_name>,如:def user(request,username):return HttpResponse(f"username is: {username}")urlpatterns = [path('admin/', admin.site.urls),path('user/<str:username>',user), ]
-  路径,匹配非空字符串,包括路径分隔符( /)<path:parameter_name>,如:def detail(request,path):return HttpResponse(f"path is: {path}")urlpatterns = [path('admin/', admin.site.urls),path('detail/<path:path>',detail), ]
-  uuid,匹配UUID格式的字符串,其格式为8-4-4-4-12<uuid:parameter_name>,如:def uuid(request,id):return HttpResponse(f"uuid is: {id}")urlpatterns = [path('admin/', admin.site.urls),path('book/<uuid:id>',uuid) ]
-  slug,匹配任何的ASCII字母,数字、短横线及下划线,<slug:parameter_name>
3. URL调度器/URL路由的工作流程
 

强烈建议:所有的视图函数存储在
views.py文件内。
四、总结1
1. 什么是Django的路由系统?
 
Django中的路由系统是一个将 URL 模式到Python函数(称为视图函数)的映射关系的机制。
2. 路由系统中有哪些路径转换器?
<int:pararameter_name>
<str:paramenter_name>
<uuid:parameter_name>
<path:parameter_name>
<slug:parameter_name>
3. 路由系统中如何传递参数?
路由系统中通过路径转换器传递参数,需要强调的是:在视图函数中也必须存在同名的参数,以接收路径转换器传递来的参数。
urlpatterns = [path('user/<int:id>/name/<str:name>',userinfo)
]
对应的视图函数则需要书写成:
from django.http import HttpResponsedef userinfo(request,id,name):......
所有的视图函数必须将
HttpRequest对象作为第一个参数传递;所有的视图函数都必须返回
HttpResponse(HTTP响应),该对象的构造函数结构是:HttpResponse(content=b'',content_type=None,status=200)
