Django相关知识点回顾(一)

简介: Django相关知识点回顾

每日分享

Develop success from failures. Discouragement and failure are two of the surest stepping stones to success.

从失败中获得成功。 沮丧和失败是成功的两个最可靠的垫脚石。

小闫语录

有些人因为失败而一蹶不振,有些人却凭借失败积累的经验在后期获得成功。失败并不可怕,如果你连面对的勇气都没有,那么你真的不配成功。从失败中汲取教训,寻找失败的原因,为成功做铺垫。你比别人承受的更多,你最后获得的成果越丰硕。不要沮丧,不要畏惧,从第三者的角度看自己,你都会瞧不起自己。振作起来,厚积薄发,现在你所有的失败都是你成功之后,骄傲的谈资。



Django相关知识点回顾

1.web服务器和web框架

后端的服务器其实分为两部分,一部分是web服务器程序,一部分是web框架程序。两部分各司其职。我们结合后端服务器处理流程进行说明:

1.接收HTTP请求报文,web服务器进行解析,并调用框架程序处理请求。

2.web框架程序进行路由分发(根据url找到对应的处理函数)。

3.调用web框架程序的处理函数中进行业务的处理。

4.web服务器组织响应报文,返回内容给客户端。

2.项目创建

创建项目:

django-admin startproject 项目名

创建子应用:

python manage.py startapp 子应用

子应用首先到settings配置文件INSTALLED_APPS中进行注册。

2.1HelloWorld程序

2.1.1视图函数的定义

注意点:函数设置形参request接收请求对象;返回相应对象HttpResponse。

# /index
def index(request):
    ...
    return HttpResponse('hello world')

2.1.2url地址配置

1.先在子应用中创建urls.py文件,设置当前子应用中url地址和视图的对应关系。

from django.conf.urls import url
from users import views
urlpatterns = [
    # url('url正则表达式','对应视图函数')
    url(r'^index/$', views.index),
]

2.在项目中总的urls.py文件中对子应用的urls文件进行包含。

urlpatterns = [
    ...
    url(r'^', include('users.urls'))
]

在访问后端接口的时候,会先到总的urls文件中进行匹配子应用,匹配到后再到子应用中的urls文件中进行视图的匹配,匹配到后,返回响应。

4.djano框架特点

1.Django框架强调快速开发DRY原则。

DRY=DoNotRepeatYourself不要重复的你自己做过的事情

2.Django是重量级框架,相对于Flask来说,很多功能组件不需要自己再进行安装。

2.1提供了项目工程管理自动化脚本工具(对应Flask中的flask-script),也就是我们可以启动服务器的时候通过命令行的方式进行传参。

2.2数据库ORM支持(对应Flask中的FlaskSQLAlchemy)

ORM是对象关系映射,就是将数据库的操作都转化成对类,属性和方法的操作,不用写sql语句了,不用关注你使用的是mysql还是Oracle等。

3.MVT模式(Model模型、View视图、Template模板)

5.URL配置

Django默认url配置风格是在末尾加 /,在子应用中进行url地址配置的时候,建议严格匹配开头和结尾。

反解析使用

reverse('namespace:name')

name是在子应用进行url配置时指定配置项的name

namespace是在项目总的urls中进行包含时指定的namespace

6.项目配置项

6.1BASE_DIR

BASE_DIR是Django项目根目录。

6.2语言时区本地化

LANGUAGE_CODE = 'zh-Hans' # 中文语言,也可以是'zh-hans'
TIME_ZONE = 'Asia/Shanghai' # 中国时间

6.3静态文件

STATICFILES_DIRS --> 设置静态文件存放的目录

STATIC_URL --> 设置访问静态文件的url地址的前缀

django框架仅仅在DEBUG=True的模式下提供静态文件

7.客户端向服务器传递参数的途径

7.1通过url地址传递参数

url(r'^weather/(?P<city>\w+)/(?P<year>\d{4})/$', views.weather),

7.2通过查询字符串传递参数

# 演示从查询字符串中提取参数
# /query/?a=1&b=2&c=3&c=4
# flask: request.args
# django: reequest.GET -> QueryDict类的对象,类似于字典,和字典区别:允许一键多值
def query_data(request):
    a = request.GET.get('a')
    b = request.GET.get('b')
    c = request.GET.get('c')
    c_list = request.GET.getlist('c')
    return HttpResponse('OK')

查询字符串不区分请求方式(get或者post请求方式都可以带查询字符串),即假使客户端进行POST方式请求,依然可以通过request.GET获取请求中的查询字符串数据。

7.3通过请求体传递数据

post表单提交,json数据,文件等等。

7.3.1post表单提交数据

# 演示获取post表单提交数据
# /form/
# flask: request.form
# django: requst.POST -> QueryDict类的对象,类似于字典,和字典的区别允许一键多值
def form_data(request):
    name = request.POST.get('name')
    age = request.POST.get('age')
    return HttpResponse('OK')

7.3.2json数据

# 演示获取json数据
# /json/
# flask: request.json
def json_data(request):
    req_data = request.body # 获取请求体中原始数据bytes
    # 将bytes转换为str
    json_str = req_data.decode()
    # 将json字符串转换为python字典
    req_dict = json.loads(json_str)
    name = req_dict.get('name')
    age = req_dict.get('age')
    return HttpResponse('OK')

7.4通过请求头传递数据

  1. request.META

7.5request对象的属性

Flask中request请求对象的属性 Django中request请求对象的属性 说明
args GET 查询字符串参数
form POST 请求体中的表单数据
data body 请求体中的原始bytes数据
method method 请求方式
path path 请求的url地址(不含域名)
headers META 请求头
cookies COOKIES 客户端发送的cookie信息
files FILES 客户端上传的文件

8.响应对象构造

8.1返回HttpResponse类的对象或其子类的对象

  1. response =HttpResponse('<响应体>', content_type='<响应数据类型>',  status='<响应状态码>')
  2. response['<key>']='<value>'# 设置响应头

8.2响应时返回json数据

# 演示响应时返回json数据
# /get_json/
# flask: jsonify
# Django: JsonResponse(<dict>)
def get_json(request):
    res_dict = {
        'name':'xiaohong',
        'age':18
    }
    return JsonResponse(res_dict)

8.3响应时进行页面的重定向

# 演示响应时进行页面重定向
# /redirect_test/
# flask: redirect('重定向的url地址')
# django: redirect('重定向的url地址')
def redirect_test(request):
    # 重定向到首页
    req_url = reverse('users:index')
    return redirect(req_url)
相关文章
|
5月前
|
存储 安全 数据库
关于“Python”Django 管理网站的核心知识点整理大全52
关于“Python”Django 管理网站的核心知识点整理大全52
36 0
|
存储 缓存 中间件
Django相关知识点回顾(二)
Django相关知识点回顾(二)
|
Python
Django知识点-URL路由 name=
Django知识点-URL路由 name=
68 0
|
安全 中间件 开发者
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
358 3
【Django学习笔记 - 9】:装饰器在类视图中的使用、中间件(开发中间件)、知识点小补充(子应用的集中管理)
|
存储 Web App开发 前端开发
Django知识点笔记(4)
Django知识点笔记(4)
Django知识点笔记(4)
|
SQL XML 缓存
Django知识点笔记(3)
Django知识点笔记(3)
Django知识点笔记(3)
|
SQL 数据可视化 前端开发
Django知识点笔记(2)
Django知识点笔记(2)
Django知识点笔记(2)
|
设计模式 JSON 前端开发
Django知识点笔记(1)
Django知识点笔记(1)
Django知识点笔记(1)
|
索引 Python 数据安全/隐私保护
第16 17章节-Python3.5-Django知识点整理 15
知识点整理: 内容整理 1. 创建Django工程 django-admin startproject 工程名 2.
1163 0