今日内容

一、url路由分发之include

项目文件夹下的urls.py文件中的url写法:
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
#首页
url(r'^$', views.base), url(r'^app01/', include('app01.urls')), url(r'^app02/', include('app02.urls')), ] app01下urls.py内容写法
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^$', views.app01base),
url(r'^index/', views.index),
] app02下urls.py内容写法
from django.conf.urls import url
from django.contrib import admin
from app02 import views urlpatterns = [
# url(r'^admin/', admin.site.urls),
url(r'^$', views.app02base),
url(r'^home/', views.home), ]

二、视图

1.请求相关的属性方法

  • (request--HttpRequest对象)
def index(request): #http相关请求信息---封装--HttpRequest对象

    if request.method == 'GET':
print(request.body) #获取post请求提交过来的原始数据
print(request.GET) #获取GET请求提交的数据
# print(request.META) # 请求头相关信息,就是一个大字典
print(request.path) #/index/ 路径
print(request.path_info) #/index/ 路径
print(request.get_full_path()) #/index/?username=dazhuang&password=123 return render(request,'index.html')
else:
print(request.body) # b'username=dazhuang'
print(request.POST) #获取POST请求提交的数据
return HttpResponse('男宾三位,拿好手牌!')

2.响应相关的方法

  • HttpResponse --- 回复字符串的时候来使用
  • render --- 回复一个html页面的时候使用
  • redirect -- 重定向
redirect -- 重定向
示例:
def login(request):
if request.method == 'GET':
return render(request,'login.html')
else:
username = request.POST.get('username')
password = request.POST.get('password')
if username == 'taibai' and password == 'dsb':
# return render(request,'home.html')
return redirect('/home/') #重定向
else:
return HttpResponse('滚犊子,赶紧去充钱!!!')
#首页
def home(request):
return render(request,'home.html')

3.FBV和CBV

3.1 FBV

FBV -- function based view
def home(request):
print('home!!!')
return render(request,'home.html')

3.2 CBV

  • 在视图里使用类处理
  • 优点
    • 提高了代码的复用性
    • 用不同的函数针对不同的HTTP方法处理,而不是通过if判断。提高代码的可读性
CBV  -- class based view
views.py
from django.shortcuts import render,HttpResponse,redirect
from django.views import View
class LoginView(View):
# 通过请求方法找到自己写的视图类里面对应的方法
def get(self,request):
return render(request,'login2.html') def post(self,request):
username = request.POST.get('uname')
password = request.POST.get('pwd')
print(username,password)
return HttpResponse('登录成功!') urls.py
url(r'^login2/', views.LoginView.as_view()),

4.CBV通过不同的请求方法找到对应的试图类中的方法

4.1关键点,反射

    def dispatch(self, request, *args, **kwargs):
if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower(), self.http_method_not_allowed) #反射

4.2CBV的dispatch方法

from django.views import View
class LoginView(View):
# GET
def dispatch(self, request, *args, **kwargs):
print('请求来啦')
ret = super().dispatch(request, *args, **kwargs)
print('到点了,走人了')
return ret
def get(self,request):
print('get方法执行了')
return render(request,'login2.html')
def post(self,request):
username = request.POST.get('uname')
password = request.POST.get('pwd')
print(username,password)
return HttpResponse('登录成功!')

4.3FBV加装饰器

def n1(f):
def n2(*args,**kwargs):
print('请求之前')
ret = f(*args,**kwargs)
print('请求之后')
return ret
return n2
@n1
def home(request):
print('home!!!')
return render(request,'home.html')

4.4CBV加装饰器

from django.views import View
from django.utils.decorators import method_decorator def n1(f):
def n2(*args,**kwargs):
print('请求之前')
ret = f(*args,**kwargs)
print('请求之后')
return ret
return n2 # @method_decorator(n1,name='get') #方式三
class LoginView(View):
# GET
# @method_decorator(n1) #方式2 给所有方法加装饰器
def dispatch(self, request, *args, **kwargs):
# print('请求来啦')
ret = super().dispatch(request, *args, **kwargs)
# print('到点了,走人了')
return ret # @method_decorator(n1) #方式1
def get(self,request):
print('get方法执行了')
return render(request,'login2.html')
def post(self,request):
username = request.POST.get('uname')
password = request.POST.get('pwd')
print(username,password)
return HttpResponse('登录成功!')

django 第三天 视图的更多相关文章

  1. day 53-1 Django基础三之视图函数

    Django基础三之视图函数   本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...

  2. day 67 Django基础三之视图函数

    Django基础三之视图函数   本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...

  3. Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  4. 03.Django基础三之视图函数

    一 Django的视图函数view 一个视图函数(类),简称视图,是一个简单的Python 函数(类),它接受Web请求并且返回Web响应. 响应可以是一张网页的HTML内容,一个重定向,一个404错 ...

  5. <Django> MVT三大块之view(视图)

    1.视图简介 作用:接受web请求,返回web响应 本质:一个函数,定义在views.py文件中(定义在其他地方也行,约定俗成) 流程:(如果匹配不到,报一个404错误)-----结果返回http r ...

  6. Django基础三之路由、视图、模板

    Django基础三之路由.视图.模板 目录 Django基础三之路由.视图.模板 1. Django 请求和返回周期 1.1 路由层之路由匹配 1.2 有名分组 1.3 无名分组 2. 反射解析 3. ...

  7. Django 的路由层 视图层 模板层

    --------------------------------------------------------------通过苦难,走向欢乐.——贝多芬 Django-2的路由层(URLconf) ...

  8. Django Rest framework 之 视图

    RESTful 规范 django rest framework 之 认证(一) django rest framework 之 权限(二) django rest framework 之 节流(三) ...

  9. Django组件(三) Django之中间件

    中间件概述 中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出.因为改变的是全局,所以需要谨慎实用,用不好会影响到性 ...

随机推荐

  1. Django重新添加字段然后迁移给定默认值依然迁移不生效

    1.将对应app下的migrations文件夹下面的除了__init__.py文件外全部删除 2.delete from django_migrations where app='当前模型的app名称 ...

  2. python实战项目 — 爬取 妹子图网,保存图片到本地

    重点: 1. 用def函数 2. 使用 os.path.dirname("路径保存") , 实现每组图片保存在独立的文件夹中 方法1: import requests from l ...

  3. kubernetes 实践五:Service详解

    Service 是 k8s 的核心概念,通过创建Service,可以为一组具有相同功能的容器应用提供一个统一的入口地址,并且将请求负载分发到后端的各个容器应用上. Service 的定义 Servic ...

  4. jedis参数不当引发的问题总结

    jedis参数不当引发dubbo服务线程池耗尽异常 现象:一个dubbo服务偶发性的出现个别机器甚至整个集群大量报线程池耗尽的问题.一开始对问题的处理比较粗暴,直接增加了10倍的线程数.但是问题依然偶 ...

  5. ASP.NET EF实体主外键关系

    其他解释 https://www.cnblogs.com/wuhenke/archive/2010/08/11/1797307.html 主键.外键 需要删除完外键表才能删除主键表 一对一关系peop ...

  6. iOS - 小功能 跳转到淘宝或天猫的商品展示详情页

    最近做iOS项目的时候遇到一个需求,点击广告页,跳转到淘宝或天猫的商品详情页. 具体需要是这样: 1)安装了淘宝:跳转到淘宝详情页. 2)没装淘宝,装了天猫:跳转到天猫详情页 3)淘宝.天猫都没装:跳 ...

  7. ES6- - Map与Set

    Map和Set 是 ES6 中新增的一种数据结构.Map为类似于Object的键值对结构,Set为成员唯一的类数组结构.以Map为例介绍两种数据结构的遍历方法.for...of var map = n ...

  8. 阿里云ssl协议发布qq邮件

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...

  9. Centos6.10编译安装php-7.1.12并安装redis模块

    1.服务器初始化 yum update -yyum install epel-release -yyum install gcc gcc-c++ wget lsof lrzsz telnet -y 2 ...

  10. python 3.7.4 安装 opencv

    明确一下,我们需要使用python来调用opencv中的库函数,所以需要安装opencv-python. 主要需要安装: 1. opencv-python 2. numpy 第一步先来安装opencv ...