Django--001 简介及入门

1. django简介

1.1 django特点

  • 提供创建项目工程自动化工具
  • 数据库ORM支持
  • 模板
  • 表单
  • Admin管理站点
  • 文件管理
  • 认证权限
  • session机制
  • 缓存
  • 官方文档:https://docs.djangoproject.com/zh-hans/3.2/
  • https://code.ziqiangxuetang.com/django/django-tutorial.html

2. django项目管理

2.1 安装

# 安装虚拟环境
mkvirtualenv django && \
 workon django && \
 ~/.virtualenvs/django/bin/python -m pip install --upgrade pip

# 库安装
pip install -i  https://pypi.douban.com/simple Django

2.2 工程简介

  • 项目创建与运行
# 创建项目
django-admin startproject djangoDemo

# 项目运行
python3 manage.py runserver 0.0.0.0:8000
  • 目录结构
.
├── db.sqlite3
├── djangoDemo
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py   # 全局配置
│   ├── urls.py       # url配置
│   └── wsgi.py
└── manage.py

2.3 子应用

  • 子应用使用步骤
# 创建子应用user
python3 manage.py startapp user

# 注册子应用
## 在settings.py文件下列表`INSTALLED_APPS`中添加`'user.apps.UserConfig'`

# 创建视图
## 在view.py文件中创建视图

# 路由配置

# 访问
  • 目录结构
.
├── db.sqlite3
├── djangoDemo
│   ├── __init__.py
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── manage.py
└── user
    ├── __init__.py
    ├── admin.py             # 文件和网站后台管理站点的配置
    ├── apps.py              # 当前子应用的相关配置信息
    ├── migrations           # 存放数据库迁移历史文件
    │   ├── __init__.py
    ├── models.py            # 保存数据库模型类
    ├── tests.py             # 开发测试用例&编写单元测试
    └── views.py             # Web应用视图

3. 路由配置

3.1 全局路由表

# urls.py


from user.views import index   # 子应用中定义index视图

urls.py.urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/', index),
]

3.2 子应用路由定义

# 子应用urls.py


from django.urls import path

from .views import index

urlpatterns = [
    path('index', index),
]
# urls.py
from django.contrib import admin
from django.urls import path, include


urlpatterns = [
    path('admin/', admin.site.urls),
    path('user/', include('user.urls')),
]

4. 视图

4.1 类函数和函数视图

# views.py
from django.http import HttpResponse
from django.views import View


# 函数视图
def index(request):
    """
    :params request: WSGIRequest,根据http请求携带的参数以及报文信息创建的对象,作为视图函数第一个参数传给视图函数,通常写成request
    :return: 必须返回一个HttpResponse对象或子对象
    """
    if request.method == 'GET':
        return HttpResponse("<h1>Hello,Django GET</h1>")
    if request.method == 'POST':
        return HttpResponse("<h1>Hello,Django POST</h1>")


# 类视图
class IndexView(View):

    def get(self, request):
        return HttpResponse("<h1>Hello,Django Class GET</h1>")

    def post(self, request):
        return HttpResponse("<h1>Hello,Django Class POST</h1>")

4.2 视图路由配置

# urls.py   子应用路由

from django.urls import path
from projects import views

urlpatterns = [
    path(r'index1/', views.index),
    path(r'index2/', views.IndexView.as_view()),  # 类视图路由

]

5. 开发模式

5.1 MVT

  • MVT 模式
  • M: Model, 模型 与MVC中的M相同,负责对数据的处理
  • V: View, 视图 与MVC中的C类似,负责处理用户请求,调用M和T,响应请求
  • T: Template, 模板 与MVC中的V类似,负责如何显示数据(产生html界面)
  • 处理过程
  • Django框架接收了用户请求和参数后,匹配URL,转发给对应视图进行处理;
  • 视图调用M处理数据,再调用T返回界面给浏览器;

5.2 前后端分离

  • 特点
  • 解耦合
  • 后端仅处理数据
  • 拓展性好:json格式,可多端共用

6. 请求和响应

6.1 请求参数

  • params格式
curl -X GET 'http://127.0.0.1:8000/user/index?name=zhangsan&age=18&name=lisi'

+ request.GET.get(key):       通过key获取get请求参数值(key存在多个值时获取最后一个)
+ request.GET.getlist(key):   通过key获取get请求参数值列表
  • data格式
curl -X POST 'http://127.0.0.1:8000/user/index'  -d 'name=zhangsan&age=18&name=lisi'

+ request.POST.get(key):       通过key获取post请求参数值(key存在多个值时获取最后一个)
+ request.POST.getlist(key):   通过key获取post请求参数值列表

  • json格式
curl -X POST 'http://127.0.0.1:8000/user/index'  -d '{"name":"zhangsan", "age": "18", "name":"lisi"}' -H "Content-Type:application/json"

+ request.body.decode('utf-8'): 获取json格式数据并转为字符串

import json
res = json.loads(request.body.decode('utf-8'))
  • 请求参数获取bebug

在这里插入图片描述

6.2 响应参数

  • HttpResponse
# 查看源码可得:
HttpResponse(
    content=b'',
    content_type=None, 
    status=None, 
    reason=None, 
    charset=None, 
    headers=None)
  • JsonResponse
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值