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), 注: ...
随机推荐
- windows 2012 r2怎么进入本地组策略
可以使用命令行或使用 Microsoft 管理控制台 (MMC) 打开本地组策略编辑器.通过命令行打开本地组策略编辑器的步骤单击“开始”,在“开始搜索”框中键入 gpedit.msc,然后按 Ente ...
- 递归查询 start with connect by prior
1.语法:start with 子节点ID='...' connect by prior 子节点ID = 父节点ID 含义:查询结果我所有的后代节点(包括我) 例子: select id,parent ...
- 【HTML】html5 canvas全屏烟花动画特效
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Linux 一些使用工具
ssh 链接使用工具xshell 下载链接 http://www.onlinedown.net/soft/36383.htm 映射硬盘工具 sftpdriver 安装输入服务器之后链接 并且输入注册码 ...
- IDEA科学使用
今天莫名激活码又用不起了有能力的支持正版吧 ,要用的时候又去网上到处找然后发现各种用不了,去淘宝又怕被骗博主就是过来人 ,总算下定决心写一篇一劳永逸的方法.. 方法一:合理使用激活码 用过idea的都 ...
- mybatis第二天01
MyBatis第二天01 1.高级结果映射 1.1根据视频案例,分析表之间的关系 数据模型分析 1. 明确每张表存储的信息 2. 明确每张表中关键字段(主键.外键.非空) 3. 明确数据库中表与表之间 ...
- CodeForces 1144A
原题链接:https://vjudge.net/problem/CodeForces-1144A #include<bits/stdc++.h> using namespace std; ...
- Python实现DBSCAN聚类算法(简单样例测试)
发现高密度的核心样品并从中膨胀团簇. Python代码如下: # -*- coding: utf-8 -*- """ Demo of DBSCAN clustering ...
- 《NVM-Express-1_4-2019.06.10-Ratified》学习笔记(5.2)-- Asynchronous Event Request command
5.2 异步事件请求命令 异步事件用于当状态.错误.健康信息这些事件发生时通知主机软件.为了使能这个controller报告的异步事件,主机软件需要提交一个或多个异步事件请求命令到controller ...
- 启动Hive时报错(com.mysql.jdbc.Driver") was not found in the CLASSPATH)
这是因为没有mysql-connector的jar包.需要把jar包复制到hive目录lib文件夹中. 参考博客:https://blog.csdn.net/Realoyou/article/deta ...