Django 介绍
-
Django介绍---组件
- 包含组件如下
- 基本配置文件、路由系统
- 模型成M/模板层T/视图层V
- Cookies 和Session
- 分页及发邮件
- Admin管理后台
- 包含组件如下
-
Django介绍---用途
- 网站、微信公众号、小程序后端开发
- 人工只能平台融合
-
Django介绍 版本
- django官网: http://www.djangoproject.com
- Django中文参考网站 https://yiyibooks.cn
- 使用LTS版本支持周期长
-
Django 介绍 -- 安装
-
支持python得版本 3.5--3.8
-
在线安装
sudo pip3 install django- 检测是否成功:
sudo pip3 freeze | grep -i 'Django'
-
离线安装
- 下载官网离线安装包
- 复制到需要安装得机器中
- 解压缩:
tar -xvf Django-xxx.tar.gz - 进入目录:
cd Django-xxx - 执行安装
sudo python3 setup.py install - 检测是否成功:
sudo pip3 freeze | grep -i 'Django'
-
Django项目结构1
- 项目结构-- 创建项目
- Django 安装成功后,终端会有
django-admin命令 - 执行
django-admin startproject 项目名,即可创建出对应项目名得文件夹 - 例如 终端执行
django-admin startproject mysite1; 则创建出mysite1项目
- Django 安装成功后,终端会有
- 项目结构- 启动服务
- 启动【测试开发阶段】
- cd 进入到项目文件夹,例如
cd mysite1 - 进入到项目文件夹后,执行
python3 manage.py runserver启动 django服务,【注意:该启动模式下,Django在前台启动服务,默认监听8000端口,想更换端口,使用python3 manage.py runserver 5000】 - 浏览器访问http://127.0.0.1:8000可看到django得启动页面
- cd 进入到项目文件夹,例如
- 启动【测试开发阶段】
- 项目结构- 关闭服务
- 关闭
- 方式1: 在runserver 启动终端下
- 执行
ctrl + c可关闭Django服务
- 执行
- 方式2: 在其他终端下
- 执行
sudo lsof -i :8000查询出Django的进程id - 执行
kill -9对应的Django进程id
- 执行
- 项目结构 - 启动常见问题
- 问题: 启动报错
Error: That port is already in use
- 问题原因:
- 端口已使用,证明当前Django启动时,默认监听端口哦8000已被其他进程占用
- 解决方案:
- 参考关闭服务
- 问题: 启动报错
- 项目结构- manage.py
- manage.py 包含项目管理的子命令,如
python3 manage.py runserver启动服务python3 manage.py startapp创建应用python3 manage.py migrate数据库迁移python3 manage.py makemigrations生成迁移文件- ....
- manage.py 包含项目管理的子命令,如
- 项目结构 项目同名文件夹
- 项目同名文件夹 - mysite1 /mysite1
__init__:python包的初始化文件wsgi.py:web服务网关的配置文件- Django正式启动时,需要用到urls.py项目的主路由配置 HTTP请求进入django时,优先调用该文件settings.py:项目的配置文件-包含项目启动时需要的配置
Django项目结构2
-
项目结构-settings.py
-
settings.py 包含了Django项目启动的所有配置项
-
配置项分为公有配置 和 自定义配置
-
配置项格式:
BASE_DIR= 'XXXX' -
共有配置 - Django官方提供的基础配置
-
DEBUG = True # 调试时开启 ALLOWED_HOSTS = [] # 允许访问的地址host头 ,调试模式默认未 127.0.0.1和locahost 俩个值 '*' 表示所有请求都接收 要使局域网其他主机也能访问此主机的Django服务,启动方式如下: python3 manage.py runserver 0.0.0.0:5000 ALLOWED_HOSTS = ['内网网卡地址']
-
-
URL和视图函数
-
url 结构
-
protocol://hostname[:port]/path[?query][#fragment]-
protocol 协议
-
hostname 域名
-
port 端口
-
path 路由
-
query 查询字符串
-
fragment 锚点
-
# urls.py from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('users/', include('users.urls')), path('index/', include('index.urls')), ] # index/urls.py from django.urls import path from index import views urlpatterns=[ path('login', views.login_view), path('index', views.index_view), ]
-
-
视图函数
-
视图函数是用于接收一个浏览器强求HttpRequest对象并通过HttpResponse对象返回相应的函数,此函数可以接收浏览器请求并根据业务洛奇返回相应的响应内容给浏览器
-
语法:
def xxx_view(request[,args*]): return HttpResponse对象 -
样例:
# file:<项目同名文件夹下>/views.py from django.http import HttpRequest,HttpResponseRedirect from django.shortcuts import render from .models import users import hashlib def show_users(request): # 查询数据库 u_user = users.objects.filter(active=1) # u_user = users.objects.exclude(active=1) print(u_user) return render(request, 'users/show_user.html',locals())
-
路由配置
- 路由配置-path
- path()函数
- 导入
from django.urls import path - 语法 path(route, views,name=None)
- route: 字符串类型,匹配的请求路径
- views:指定路径所对应的视图处理函数名称
- name:为地址起名,在模板中地址反向解析时使用
- 导入
- path()函数
- 路由配置- path - 转换器
- path转换器
- 语法:<转换器类型:自定义名>
- 作用: 若转换器类型匹配到对用类型的数据,则将数据按照关键字传参的方式传递给视图函数
- 样例:
python('page/<int:page>', views.xxx) - 转换器类型
- str 匹配处理 '/'之外的非空字符串
- int 匹配0 或者任何正整数,返回一个int
- slug 匹配任意由ASCII字母或数字一级连字符和下划线组成的短标签
- path 匹配非空字段,包括路径分隔符'/'
- path转换器
路由配置2
- 路由配置- re_path()
- re_path()函数
- 在url的匹配过程中可以使用正则表达式进行精确匹配
- 语法:
- re_path(reg, view, name=xxx)
- 正则表达式为命名分组模式
(?P<name>pattern);匹配提取参数后用关键字传参方式传递给视图函数

浙公网安备 33010602011771号