Django路由层、视图层
一、路由匹配:
第一个参数是正则表达式,匹配规则按照从上往下一次匹配,匹配到一个后立即停止
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^$',views.home),
url(r'^test/$',views.test),
url(r'^testadd/$',views.testadd),
url(r'',views.error)
]
网站首页路由:
url(r'^$', views.home),
网站不存在页面:
url(r'',views.error), 在进行正则匹配的时候如果没有^开头的符号和/在进行正则匹配的时候只要输入的内容中有这个字符就会根据位置从上到下进入相应的视图页面 二、无名分组:
将加括号的正则表达式匹配到的内容当做位置参数自动传递给对应的视图函数
url(r'^test/(\d+)/',views.test), # 匹配一个或多个数字
def test(request,xxx):
print(xxx) #print打印的时候只会显示数字
return HttpResponse('test')


三、有名分组
将加括号的正则表达式匹配到内容当做关键字参数自动传递给对应的视图函数
url(r'^yzn/(?P<year>\d+)/',views.yzn), #只能匹配数字不能出现字母
def yzn(request,year):
print(year)
return HttpResponse('yzn')
注:无名分组和有名分组不能混着用!!
支持用一个类型多形式匹配
无名分组:
url(r'^test/(\d+)/(\d+)/',views.test),
def test(request,aaa,bbb):
print(aaa)
print(bbb)
return HttpResponse('test')
有名分组:
url(r'^yzn/(?P<a>\d+)/(?P<b>\d+)/',views.yzn)
def yzn(request,a,b):
print(a)
print(b)
return HttpResponse('yzn')
四、反向解析(根据名字动态获取对应的路径)
在视图中添加模块reverse
1、后端使用:
定义一个路径:
url(r'^index1111111111111/$',views.index,name='index')
在视图中打印出来:
def test(request,aaa,bbb):
print(aaa)
print(bbb)
print('url:',reverse('index'))
return HttpResponse('test')
在网页中输入test路径信息,后台后打印名字“index”所在路径信息


2、前端使用反向解析:
urls中定义:
url(r'^index111/$',views.index,name='index')
在视图views中定义:

在模板templates中定义index.html文件

当页面访问index111路径的时候,html页面中a标签的地址也跟着变了


五、无名分组反向解析:
设置一个url:test1,设置名字为list
url(r'test1/(\d+)/',views.test1,name='list')
设置一个url:index
url(r'^index/',views.index),
设置index的视图views:



六、有名分组:
设置urls:
url(r'test1/(?P<a>\d+)/',views.test1,name='list')
url(r'^index/',views.index),
设置views:



七、路由分发:
django每一个app应用都可以有自己的urls.py路由层,templates文件夹,static文件夹
项目名下urls.py(总路由)不再做路由与视图函数的匹配关系而是做路由的分发
from django.conf.urls import include
# 路由分发 注意路由分发总路由千万不要$结尾
url(r'^app01/',include(app01_urls)),
url(r'^app02/',include(app02_urls))
# 在应用下新建urls.py文件,在该文件内写路由与视图函数的对应关系即可
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index/',views.index)
]
八、名称空间(解决路由分发不能区分路径):
url(r'^app01/',include(app01_urls,namespace='app01')),
url(r'^app02/',include(app02_urls,namespace='app02'))
app01.urls.py
from django.conf.urls import url
from app01 import views
urlpatterns = [
url(r'^index/',views.index,name='index')
]
app02.urls.py
from django.conf.urls import url
from app02 import views
urlpatterns = [
url(r'^index/',views.index,name='index')
]
app01.views.py
reverse('app01:index')
app02.views.py
reverse('app02:index')
九、伪静态:
动态网页通过静态页面访问方式html后缀的方式访问
url(r'^index.html',views.index,name='app01_index')
十、文件上传:
设置表单from

前端需要注意的点:
1.method需要指定成post
2.enctype需要改为formdata格式
后端暂时需要注意的是
1.配置文件中注释掉csrfmiddleware中间件
2.通过request.FILES获取用户上传的post文件数据
file_obj = request.FILES.get('my_file')
print(file_obj.name)
with open(file_obj.name,'wb') as f:
for line in file_obj.chunks():
f.write(line)
Django路由层、视图层的更多相关文章
- day 45 Django 的初识2 路由层,视图层,模板层
前情提要: 今天继续学习Django 的内容, 今天主要和渲染相关 1>配置路由 >2:写函数 >3 指向url 一:路由层 1:配置静态支持文件 1:路由层的简单配置 >dj ...
- Django路由层与视图层、pycharm虚拟环境
一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实 ...
- Django路由层与视图层
表与表之间建关系 图书管理系统为例 书籍表 出版社表 作者表 三个表之间的关系: 考虑表之间的关系:换位思考 1.书籍和出版社是一对多,外键字段建立在书籍表中 2.书籍和作者是多对多, 需要建立第三方 ...
- [Django框架之视图层]
[Django框架之视图层] 视图层 Django视图层, 视图就是Django项目下的views.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相 ...
- 关于Django路由层简单笔记
Django—路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个U ...
- Django 路由层与视图层
1.路由层 1.1无名分组 1.2 有名分组 1.3 反向解析 1.4 路由分发 1.5 名称空间 2.伪静态网页 3.虚拟环境 4.视图层 1.1 JsonResponse 1.2 FBV与CBV ...
- django 路由层 伪静态网页 虚拟环境 视图层
路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页 虚拟环境 视图层 JsonResponse FBV与CBV 文件上传 项目urls.py下面 from app01 import ...
- Web框架之Django_03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)
摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...
- $Django 路由层(有,无名分组、反向解析、总路由分发、名称空间、伪静态)
1 简单配置 -第一个参数是正则表达式(如果要精准匹配:'^publish/$') -第二个参数是视图函数(不要加括号) -url(r'^admin/', admin.site.urls), 注: ...
随机推荐
- java 实现大顶堆
Java实现堆排序(大根堆) 堆排序是一种树形选择排序方法,它的特点是:在排序的过程中,将array[0,...,n-1]看成是一颗完全二叉树的顺序存储结构,利用完全二叉树中双亲节点和孩子结点之间 ...
- while语句的使用
学习while语句的正确用法:题目:老师教学生,讲一次之后 问学生会不会,如果不会:就再讲一遍.如果会了就放学,但是如果连讲了十遍还是不会,那也要放学回家 namespace _44讲十遍会不会 { ...
- 在javascript编程语言中,数据类型boolean的相关知识
一. 1.字符串类型: 空字符串返回false,非空字符串均返回true; 2.数值类型: 0或NaN返回false,其他数值返回true; 3.布尔类型: false返回false,true返回tr ...
- JS DOM操作(创建、遍历、获取、操作、删除节点)
创建节点 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="u ...
- 使用vegrant安装centos7
1.首先去安装需要先安装好 Vagrant 和 VirtualBox. 安装好需要重启电脑. 可能网速会很慢,建议复制链接到迅雷下载,或者国内随便找个下载也可以. 2.在电脑创建vagrant_vm目 ...
- mac 中 端口占用
1. sudo lsof -i :5001 2. sudo kill -9 PID
- Java(四)输出和输入函数
介绍一下Java里简单常用的输入输出方法. Java的输出函数很简单,直接调用System类的out对象的print函数即可. 代码: System.out.print(a);//输出变量a的值 Sy ...
- Java(二)Arrays工具类
Arrays是一个专门用于操作数组的工具类,该类位于java.util包中. Arrays的常用方法: 1.排序方法 原型:static void sort(int [] a) 功能:对指定的int型 ...
- centos8 samba
安装dnf install -y samba samba-client开机启动systemctl enable smb立即启动systemctl start smb防火墙放行firewall-cmd ...
- tomcat-embeded-core源码编译
使用spring-boot创建web工程时,默认采用embeded tomcat作为容器,实际使用过程中,可能会需要对其中的某些功能做微调,而tomcat又没有给出预留配 ,这时就需要对tomcat- ...