Django路由层、视图层

时间:2022-11-01 19:07:41

 一、路由匹配:

  第一个参数是正则表达式,匹配规则按照从上往下一次匹配,匹配到一个后立即停止

  

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')

Django路由层、视图层Django路由层、视图层

  三、有名分组

    将加括号的正则表达式匹配到内容当做关键字参数自动传递给对应的视图函数

    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”所在路径信息

Django路由层、视图层Django路由层、视图层

   2、前端使用反向解析:

    urls中定义:  

    url(r'^index111/$',views.index,name='index')
    在视图views中定义:

     Django路由层、视图层

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

     Django路由层、视图层

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

    Django路由层、视图层Django路由层、视图层

  五、无名分组反向解析:

    设置一个url:test1,设置名字为list   

    url(r'test1/(\d+)/',views.test1,name='list')
   设置一个url:index
    url(r'^index/',views.index),
   设置index的视图views:

    Django路由层、视图层

Django路由层、视图层Django路由层、视图层

  六、有名分组:

    设置urls:   

    url(r'test1/(?P<a>\d+)/',views.test1,name='list')
    url(r'^index/',views.index),
    设置views:
    

    Django路由层、视图层

Django路由层、视图层Django路由层、视图层

  七、路由分发:

    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

  Django路由层、视图层

  前端需要注意的点:
  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路由层、视图层的更多相关文章

  1. day 45 Django 的初识2 路由层&comma;视图层&comma;模板层

    前情提要: 今天继续学习Django 的内容, 今天主要和渲染相关 1>配置路由 >2:写函数 >3 指向url 一:路由层 1:配置静态支持文件 1:路由层的简单配置 >dj ...

  2. Django路由层与视图层、pycharm虚拟环境

    一. Django路由层 路由层即对应项目文件下的urls.py文件.实际上每个APP中也可以有自己的urls.py路由层.templates文件夹及static文件夹.Django支持这么做,也为实 ...

  3. Django路由层与视图层

    表与表之间建关系 图书管理系统为例 书籍表 出版社表 作者表 三个表之间的关系: 考虑表之间的关系:换位思考 1.书籍和出版社是一对多,外键字段建立在书籍表中 2.书籍和作者是多对多, 需要建立第三方 ...

  4. &lbrack;Django框架之视图层&rsqb;

    [Django框架之视图层] 视图层 Django视图层, 视图就是Django项目下的views.py文件,它的内部是一系列的函数或者是类,用来专门处理客户端访问请求后处理请求并且返回相应的数据,相 ...

  5. 关于Django路由层简单笔记

    Django—路由层 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于客户端发来的某个U ...

  6. Django 路由层与视图层

    1.路由层 1.1无名分组 1.2 有名分组 1.3 反向解析 1.4 路由分发 1.5 名称空间 2.伪静态网页 3.虚拟环境 4.视图层 1.1 JsonResponse 1.2 FBV与CBV ...

  7. django 路由层 伪静态网页 虚拟环境 视图层

    路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页 虚拟环境 视图层 JsonResponse FBV与CBV 文件上传 项目urls.py下面 from app01 import ...

  8. Web框架之Django&lowbar;03 路由层了解(路有层 无名分组、有名分组、反向解析、路由分发 视图层 JsonResponse,FBV、CBV、文件上传)

    摘要: 路由层 无名分组 有名分组 反向解析 路由分发 名称空间 伪静态网页.虚拟环境 视图层 JsonResponse FBV 与 CBV(function base views与class bas ...

  9. &dollar;Django 路由层&lpar;有&comma;无名分组、反向解析、总路由分发、名称空间、伪静态&rpar;

    1 简单配置 -第一个参数是正则表达式(如果要精准匹配:'^publish/$')  -第二个参数是视图函数(不要加括号)  -url(r'^admin/', admin.site.urls), 注: ...

随机推荐

  1. 平滑过渡的战争迷雾&lpar;一&rpar; 原理:Warcraft3地形拼接算法

    本系列文章由七十一雾央编写,转载请注明出处.  http://blog.csdn.net/u011371356/article/details/9611887 作者:七十一雾央 新浪微博:http:/ ...

  2. Linux c 下使用getopt&lpar;&rpar;函数

    命令行参数解析函数 —— getopt() getopt()函数声明如下: #include <unistd.h> int getopt(int argc, char * const ar ...

  3. 转载:Hadoop权威指南学习笔记

    转自:http://pieux.github.io/blog/2013-05-08-learn-hadoop-the-definitive-guide.html 1 前言 Hadoop的内部工作机制: ...

  4. &Tab;VS2012 C&num;调用C&plus;&plus; dll

    VS2012 C#调用C++ dll 调试方法:[dll工程和调用dll的exe工程在同一个解决方案中]dll工程,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug\* ...

  5. DZY的根&lpar;思维水&rpar;

    DZY的根[问题描述]DZY是个没有根的人,他十分想要有根,这样才能...智商爆表的计算机大神WJC决定再帮帮他,他用程序制造了N个根——有生命的根!这N个根和WJC一样都十分机智,他们要参加国际象棋 ...

  6. 使用COM提供SafeArray数据

    在前一篇博文<读取SafeArray数据>我们介绍了C#读取安全数组.那么我们的COM怎么编写呢? 1. 定义SAFEARRAY变量 SAFEARRAY *pSArray = NULL; ...

  7. LNMP单点服务器搭建

    一.部署服务器环境 Linux:centos6.5 nginx:1.14.0 mysql:5.6.33 php:5.6.36 1.网络配置 2.FQDN /etc/hosts /etc/sysconf ...

  8. hadoop day 7

    1.storm概述 应用于实时的流式计算,结合消息队列和数据库进行使用. Spouts:拓扑的消息源 Bolts:拓扑的处理逻辑单元,每个bolt可以在集群当中多实例的并发执行 tuple:消息元组, ...

  9. win7中调试Hotspot

    预置: 1.Visual Studio 2010 2.CYGWIN(设置到path中) 3.jdk(设置到path中) 4.Framework4(系统如果有就不需要安装) 5.win7 sdk 7.1 ...

  10. GIT学习笔记——常用命令

    最近使用使用GIT较多,但命令很容易就忘记了,于是整理下,大多整理与一些文档和他人博客 在当前目录新建建一个纯git代码库 $ git --bare init 在当前目录新建一个Git代码库 $ gi ...