1,类视图(掌握)
-
作用: 使用类的方式来提供视图的功能
-
好处:
- 1, 可读性更好
- 2, 提供代码的复用性
-
使用流程:
-
1, 在子应用的views中定义类视图
#1,编写类视图处理业务 class RegisterView(View): def get(self,request): print(request.GET) return HttpResponse("RegisterView get") def post(self,request): print(request.GET) print(request.body) return HttpResponse("RegisterView post")
-
2, 在子应用的urls文件中定义好路径(路由)
from django.conf.urls import url from . import views urlpatterns = [ #1,编写类视图处理业务, url(r"^register/$",views.RegisterView.as_view()) ]
-
3, 将子应用的urls文件,设置到根应用中
url(r'^', include('booktest.urls'))
-
2,类视图原理(理解)
3,类视图增加装饰器(了解)
-
作用: 给已经存在的类视图,增加额外的功能
-
装饰的过程有两种:
-
方式一:
-
1, 定义好装饰器
-
2,在url路径中使用装饰器进行装饰
views.py # 定义装饰器 def user_login_data(view_func): def wrapper(request,*args,**kwargs): #可以实现用户数据的封装 print(request.method) return view_func(request,*args,**kwargs) return wrapper urls.py #2,给类视图增加装饰器,给RegisterView2返回的view装饰即可 url(r"^register2/$",views.user_login_data(views.RegisterView2.as_view())),
-
-
方式二:
-
1,定义好装饰器
-
2,使用系统提供的method_decorator装饰器方法装饰
# 定义装饰器 def user_login_data(view_func): def wrapper(request,*args,**kwargs): #可以实现用户数据的封装 print(request.method) return view_func(request,*args,**kwargs) return wrapper #3,给类视图增加装饰器,方式二,使用系统提供的method_decrator方法 # @method_decorator(user_login_data,name="get") # @method_decorator(user_login_data,name="post") @method_decorator(user_login_data,name="dispatch") #该类视图中的所有请求方法都会装上 class RegisterView3(View): # @method_decorator(user_login_data) def get(self,request): print("RegisterView3 get") return HttpResponse("RegisterView3 get") # @method_decorator(user_login_data) def post(self,request): print("RegisterView2 post") return HttpResponse("RegisterView3 post")
-
-
4,中间件(了解)
-
作用: 类似于flask中的请求钩子,在请求的前后做对应的处理,比如: 数据库的链接,参数的校验, 统一数据的格式返回
-
1, 创建文件
-
2,在文件中编写中间件函数(装饰器)
-
3,将装饰器注册到settings.py的中间件中
middleware.py文件 def my_middleware(view_func): print("1, init") def wrapper(request): print("1, before_request") #在这里就可以取校验参数 response = view_func(request) print("1, after_request") return response return wrapper #中间件(settings.py) MIDDLEWARE = [ ... 'booktest.middleware.my_middleware', 'booktest.middleware.my_middleware2', 'booktest.middleware.my_middleware3', ]
-
5,模板(了解)
-
作用: 用来渲染数据的
-
使用流程:
-
1, 使用loader对象,获取模板
-
2,使用模板渲染页面
-
3,返回响应,携带模板页面
#4,使用模板渲染数据 class TempView(View): def get(self,request): #一, 完整写法: """ # - 1, 使用loader对象,获取模板 template = loader.get_template("file01.html") # - 2,使用模板渲染页面 file_data = template.render() # - 3,返回响应,携带模板页面 return HttpResponse(file_data) """ #二,简化写法 return render(request,"file01.html")
-
'DIRS': [os.path.join(BASE_DIR,"templates")],
-
6,数据库配置(掌握)
-
作用: 让django程序能够去操作数据库
-
配置内容
#数据库配置 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'python10', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': '3306', } }
-
注意点: 需要自己在终端中创建数据库
7,图书模型类(理解)
8,英雄模型类(理解)
9,数据库迁移,添加测试数据(掌握)
- 创建流程
- 迁移成功的绝招
10,数据库日志信息查看(理解)
- 1, 进入到终端中
python manage shell
-
2, 修改数据库日志信息记录文件
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf 放开68,69行
-
3,监控日志的运行
-
tail -f /var/log/mysql/mysql.log 如果不能监控,加上sudo 如果还监控不了,重启数据库 sudo service mysql restart
-