Django

简介: Django

HTTP无状态协议,是指协议对于交互性场景没有记忆能力,每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。

创建用户对象的三种方法:

  • create():创建一个普通用户,密码是明文的。
  • create_user():创建一个普通用户,密码是密文的。
  • create_superuser():创建一个超级用户,密码是密文的,要多传一个邮箱 email 参数。

参数:

  • username: 用户名。
  • password:密码。
  • email:邮箱 (create_superuser 方法要多加一个 email)。

cookie 弥补了 http 无状态的不足,让服务器知道来的人是"谁",但是 cookie 以文本的形式保存在浏览器端,安全性较差,且最大只支持 4096 字节,所以只通过 cookie 识别不同的用户,然后,在对应的 session 里保存私密的信息以及超过 4096 字节的文本。ie:set_cookie("sessionid",随机字符串)** 响应给浏览器

登录,认证 和 登录login------------>user绑定到request

注销,logout

Django 中间件

Django 中间件是修改 Django request 或者 response 对象的钩子,可以理解为是介于 HttpRequest 与 HttpResponse 处理之间的一道处理过程。

Django 中间件作用:

  • 修改请求,即传送到 view 中的 HttpRequest 对象。
  • 修改响应,即 view 返回的 HttpResponse 对象。

中间件组件配置在 settings.py 文件的 MIDDLEWARE 选项列表中。

配置中的每个字符串选项都是一个类,也就是一个中间件。

自定义中间件

中间件可以定义四个方法,分别是:

process_request(self,request) process_view(self, request, view_func, view_args, view_kwargs) process_exception(self, request, exception) process_response(self, request, response)

process_request 方法

process_request 方法有一个参数 request,这个 request 和视图函数中的 request 是一样的。

process_request 方法的返回值可以是 None 也可以是 HttpResponse 对象。

  • 返回值是 None 的话,按正常流程继续走,交给下一个中间件处理。
  • 返回值是 HttpResponse 对象,Django 将不执行后续视图函数之前执行的方法以及视图函数,直接以该中间件为起点,倒序执行中间件,且执行的是视图函数之后执行的方法。

process_request 方法是在视图函数之前执行的。

当配置多个中间件时,会按照 MIDDLEWARE中 的注册顺序,也就是列表的索引值,顺序执行。

不同中间件之间传递的 request 参数都是同一个请求对象。

process_view

process_view 方法格式如下:

process_view(request, view_func, view_args, view_kwargs)

process_view 方法有四个参数:

  • request 是 HttpRequest 对象。
  • view_func 是 Django 即将使用的视图函数。
  • view_args 是将传递给视图的位置参数的列表。
  • view_kwargs 是将传递给视图的关键字参数的字典。

process_response

process_response 方法有两个参数,一个是 request,一个是 response,request 是请求对象,response 是视图函数返回的 HttpResponse 对象,

  • 该方法必须要有返回值,且必须是response。
    process_response 方法是在视图函数之后执行的。
    当配置多个中间件时,会按照 MIDDLEWARE 中的注册顺序,也就是列表的索引值,倒序执行。

process_exception

process_exception 方法如下:

process_exception(request, exception)

参数说明:

  • request 是 HttpRequest 对象。
  • exception 是视图函数异常产生的 Exception 对象。

实例

class MD1(MiddlewareMixin): def process_request(self, request): print("md1 process_request 方法。", id(request)) #在视图之前执行

def process_response(self,request, response): :#基于请求响应 print("md1 process_response 方法!", id(request)) #在视图之后 return response


def process_view(self,request, view_func, view_args, view_kwargs): print("md1 process_view 方法!") #在视图之前执行 顺序执行 #return view_func(request)


def process_exception(self, request, exception):#引发错误 才会触发这个方法 print("md1 process_exception 方法!") # return HttpResponse(exception) #返回错误信息

Django表单组件

Form.cleaned_data

类中的每个字段[Form]不仅负责验证数据,还负责“清理”数据——将其规范化为一致的格式。因为它允许以多种方式输入特定字段的数据,始终产生一致的输出。

as_p()

Form.as_p()

as_p()使用分配给 forms template_name_p属性的模板呈现表单,默认情况下,此模板为 'django/forms/p.html'. 此模板将表单呈现为一系列 <p>标签

as_ul()

Form.as_ul()

as_ul()使用分配给 forms template_name_ul属性的模板呈现表单,默认情况下,此模板为 'django/forms/ul.html'. 此模板将表单呈现为一系列 <li>标签,每个标签<li>包含一个字段。它不包括or <ul></ul>因此您可以在 上指定任何 HTML 属性以 <ul>实现灵活性

as_table()

Form.as_table()

as_table()使用分配给 formstemplate_name_table属性的模板呈现表单,默认情况下,此模板为'django/forms/table.html'. 此模板将表单输出为 HTML<table>`

Django Form 组件

Django Form 组件用于对页面进行初始化,生成 HTML 标签,此外还可以对用户提交对数据进行校验(显示错误信息)。

前端校验+后端校验

前端校验是为了减少后端服务器压力

后端校验为了保存到数据库里的数据是合法的

字段属性:

  • label:输入框前面的文本信息。
  • error_message:自定义显示的错误信息,属性值是字典, 其中 required 为设置不能为空时显示的错误信息的 key。
相关文章
|
2月前
|
SQL 前端开发 API
Django 系列
【8月更文挑战第20天】
26 1
|
3月前
|
关系型数据库 MySQL 数据库
django初学
【7月更文挑战第3天】1. 安装Django: `pip install Django` 2. 创建项目: `django-admin startproject HelloWorld` 3. 启动项目: `python manage.py runserver 0.0.0.0:8000` 4. 生成应用: `django-admin startapp TestModel` 5. 配置多数据库(MySQL):
28 1
|
5月前
|
SQL 数据库 数据库管理
深入Django(七)
Django的数据库迁移系统是管理数据库模式变化的关键组件,自动化创建、修改和删除表及字段。它提供版本控制,便于团队协作。通过`makemigrations`生成迁移文件,`migrate`应用到数据库。迁移支持依赖关系和数据迁移功能,允许填充初始数据或执行数据转换。这个系统简化了数据库管理,促进了开发中的数据一致性。
41 5
|
5月前
|
数据库 数据安全/隐私保护 Python
深入Django(六)
本文档介绍了Django的表单系统,用于处理用户输入和数据验证。首先,表单通过声明式方式定义,如在`forms.py`中基于模型创建表单类。接着,在视图中处理GET和POST请求,使用`is_valid()`和`save()`方法验证和保存数据。在模板中,使用标签渲染表单和错误信息。表单系统还包括内置及自定义验证规则,以及与模型的集成,如`ModelForm`方便数据保存。此外,还有表单集、表单继承和自定义字段等高级功能。表单系统简化了用户输入管理和数据安全。
41 4
|
5月前
|
前端开发 数据管理 API
深入Django(二)
本文介绍了Django的模型(Models)系统,它是Django框架中处理数据库的核心部分。模型是通过Python类定义的,对应数据库中的表,属性代表表的字段。通过模型,可以方便地操作数据,如创建、查询、更新和删除记录。文中展示了如何创建`Author`和`Post`模型,以及如何使用ORM进行对象操作。此外,还提到了模型的高级特性,如字段选项、字段类型、关系以及自定义方法和属性,这些都是Django高效管理数据的关键。理解模型对于Django应用开发至关重要。
36 1
|
Python
初识Django
初识Django
61 0
|
算法 前端开发 网络安全
【Django】Hello,DJango!
这样就在主目录下创建了一个自己的项目以下统称创建的项目路径为根目录(即ppeua_app/)
95 0
|
设计模式 缓存 前端开发
Django——小结
 Python的WEB框架有Django、Tornado、Flask 等多种,Django是重量级选手中最有代表性的一位,它的优势为:大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能。
125 0
Django——小结
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4577 0
|
Web App开发 前端开发 数据库
Django中的ModelForm
一、ModelForm的基本用法示例: from django import forms from app01 import models class BookModelForm(forms.
1166 0