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), 注: ...
随机推荐
- SSM开发健康信息管理系统
Spring+Spring MVC+MyBatis基于MVC架构的个人健康信息管理系统 采用ssm框架,包含 健康档案.健康预警(用户输入数据,系统根据范围自动判断给出不同颜色箭头显示). 健康分析. ...
- python报错bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml.
qpython运行 原代码: soup = BeautifulSoup(r.text,'lxml') 报错:bs4.FeatureNotFound: Couldn't find a tree b ...
- CSS小记录
1.图片铺满 background: rgba(12, 100, 129, 1) url('https://images.cnblogs.com/cnblogs_com/yukarin/1639008 ...
- SQL Tuning Health-Check Script (SQLHC) (文档 ID 1366133.1)
Login to the database server and set the environment used by the Database Instance Download the &quo ...
- Hbase架构剖析
HBase隶属于hadoop生态系统,它参考了谷歌的BigTable建模,实现的编程语言为 Java, 建立在hdfs之上,提供高可靠性.高性能.列存储.可伸缩.实时读写的数据库系统.它仅能通过主键( ...
- linux服务基础之编译安装nginx
nginx源码下载地址: http://nginx.org/download/nginx-1.16.0.tar.gz //根据需要下载其他版本 1. 下载nginx # wget http://ngi ...
- LTC
LTC 即 L2C,Leads To Cash,从线索到现金的企业运营管理思想,是以企业的营销和研发两大运营核心为主线,贯穿企业运营全部流程,深度融合了移动互联.SaaS技术.大数据与企业运营智慧,旨 ...
- Joomla 3.0.0 --> 3.4.6-RCE复现
Joomla是一款网站管理系统CMS,最近曝出其3.00-3.4.6的joomla版本存在一个RCE漏洞. 并且大佬已将exp放在了github上,下载地址:https://www.exploit-d ...
- Win10如何设置休眠选项(关于睡眠、休眠、快速启动这几个伪关机功能如何设置更适合笔记本电脑?)
· Win10如何设置休眠选项(关于睡眠.休眠.快速启动这几个伪关机功能如何设置更适合笔记本电脑?) 应用场景 升级正式版win10以后,发现竟然没有休眠选项,从电源管理器里面也没有找到,有时候有些重 ...
- idea中如何配置git以及在idea中初始化git,并push到码云
一.给idea配置git 打开IDEA,按照路径 Fie-->Settings --> Tools -->Terminal 找到后设置右边的Shell path(自己安装的Git路 ...