Django
- 简介:
- 使用框架开发
1.可以站在巨人的肩膀上
- 提高开发效率
- 只关注业务逻辑上的实现,不关心底层建设
- 使用框架开发
- 常用的框架Django 和 Flask
- diango
- 大而全
- 入门简单
- 最流行
- Flask
1.轻量级
- 定制化程度高
- 流行
- 适合于老手
diango的特点
- 提供创建项目的自动工具
- 数据库ORM支持
- 模板
- 表单
- admin管理站点
- 文件管理
- 认证权限
- session 机制
- 缓存
创建工程
- 创建虚拟环境(详情查看之前文章)
- python -m venv 虚拟环境名
- 安装Django
-
进入虚拟环境
win:
image.png - 安装Django(网络不好的可以用豆瓣源)
pip install Django
-
- 创建项目
- 命令行创建:
diango startproject 项目名
创建于项目配置同名需要下项目名后加一个 “ .”
diango startproject 项目名 . -
使用PyCjarm创建
image.png
- 运行项目
- python manage.py runserver
- python manage.py runserver ip:端口
目录结构
setting : 项目全局配置文件
urls: 生命全局的URL路由表
wagi.py 兼容Wsgi的web服务器入口
manage.py 和sjango交互的命令行工具
-
修改项目主页语言
image.png
创建子应用
- 定义
- 业务模块做到复用
- 将工程项目拆分为不同的子功能模块
- 以子应用的形式存在
-各功能模块间可以相互的独立
- 以子应用的形式存在
- 可以将该模块整体复制
2.创建
- python manage.py startapp 子应用名
3.注册
-
在全局配置文件setting中的INSTALLED_APPS添加子应用
image.png
4.创建视图
-
在子应用名/views.py中代码如下
image.png
5.添加路由
- 在project/urls.py子路由文件
-
全部路由urls中加载子路由信息
image.png
6.子应用结构
migrations 用于数据库迁移历史记录
admin 网站后台管理站点配置文件
apps 用于配置当前子应用的相关信息
models 保存数据库模型类
test.py 编写单元测试
views 用于编写web视图
路由
- 全局
from django.contrib import admin
from django.urls import path,include
#全局路由配置信息
# urlpatterns为固定名称的列表
# 列表中的一个元素,就代表一条路由
# 从上到下进行匹配,如果成功,django会导入和调用path函数第二个参数指定的视图获取去子路由中匹配
# 如果匹配不上会抛出一个404(默认404页面,状态404)
urlpatterns = [
path('admin/', admin.site.urls),
path('index', include('Project.urls')),
]
- 子路由
from django.urls import path
from Project.views import index
#子路由配置信息
# urlpatterns为固定名称的列表
# 列表中的一个元素,就代表一条路由
# 从上到下进行匹配
# 如果匹配不上会抛出一个404(默认404页面,状态404)
urlpatterns = [
path('', index),
]
视图
- 函数视图
from django.http import HttpResponse
from django.views import View
# Create your views here.
# 函数视图
# 视图函数第一个参数一般默认为request
def index(request):
'''
:param requext: # request是HTTprequest对象,白喊前端的所有请求信息
:return: 必须返回一个HttpReponse对象或者子对象
'''
if request.method == 'GET':
return HttpResponse('<h1>星空<h1>')
elif request.method == "POST":
return HttpResponse('<h1>黑夜<h1>')
else:
return HttpResponse('<h1>星星<h1>')
路由设置
image.png- 类视图
#类视图
class Indexview(View):
def get(self,request):
return HttpResponse('<h1>星空<h1>')
def post(self,request):
return HttpResponse('<h1>黑夜<h1>')
def delete(self,request):
return HttpResponse('<h1>星星<h1>')
路由设置:
image.png
模板
- templates
1.创建一个html邮件
image.png
2,在视图中调用:
from django.shortcuts import render
from django.http import HttpResponse
from django.views import View
# Create your views here.
# 函数视图
# 视图函数第一个参数一般默认为request
def index(request):
'''
:param requext: # request是HTTprequest对象,白喊前端的所有请求信息
:return: 必须返回一个HttpReponse对象或者子对象
'''
if request.method == 'GET':
return HttpResponse('<h1>星空<h1>')
elif request.method == "POST":
return HttpResponse('<h1>黑夜<h1>')
else:
return HttpResponse('<h1>星星<h1>')
#类视图
class Indexview(View):
def get(self,request):
# return HttpResponse('<h1>星空<h1>')
# 从数据库中读取数据
datas = [
{'project':'11',
'leader':'22'},
{'project': '33',
'leader': '44'},
]
#locals将数据传入
return render(request,'test.html',locals())
def post(self,request):
return HttpResponse('<h1>黑夜<h1>')
def delete(self,request):
return HttpResponse('<h1>星星<h1>')
MVT模式
M : mode 负责和数据库交互
V: View 接收请求
T: Templace 负责构造返回的HTML页面
image.png
网友评论