高级视图和url配置

一、URLconf技巧

1、流线型化函数导入

对于配置url,我们可以使用以下几种方式:

(1)引入view中的函数

from firstSite.view import current_datetime,hour_ahead
from django.conf.urls import url,include,patterns
urlpatterns = patterns('',
(r'^time/$',current_datetime),
(r'^time/plus/(\d{1,2})/$',hour_ahead),
)

(2)引入view文件:

from django.conf.urls import url,include,patterns
from firstSite import view urlpatterns = patterns('',
(r'^time/$',view.current_datetime),
(r'^time/plus/(\d{1,2})/$',view.hour_ahead),
)

2、url嵌套

  如果我们引入了多个app下名为views.py的多个文件,以函数引入太麻烦以文件引入又不方便,这种情况下我们可以使用"include"来分成根url文件和各个app的子url文件;

使用我们之前的例子,名为firstSite的文件下有两个分别名为books和contact的app,则我们的根URL可以为这样:(注意:没有“$”终止符,不然的话不会读取到子urls文件)

from django.conf.urls import url,include,patterns
from firstSite import view
urlpatterns = [
url(r'^information/$',view.info),
url(r'^time/$',view.currentTime),
url(r'^time/plus/(\d{1,2})$',view.hour_ahead),
url(r'^current_time/$',view.current_datetime),
url(r'^meta/$',view.display_meta),
url(r'^books/',include('books.urls')), #引入books的urls.py
url(r'^contact/',include('contact.urls')), #引入Contact的url.py
]

两个子urls文件:

#books.urls.py
# -*- coding:utf-8 -*-
from django.conf.urls import url
from django.contrib import admin
from . import views urlpatterns = [
url(r'^admin/', admin.site.urls),
#url(r'^operation$',views.addData),
url(r'^operation/plus/(\w{2,6})$',views.delete_data),
url(r'^all$',views.all_data),
url(r'^search/$',views.search),
] #contact.urls.py
# -*- coding:utf-8 -*-
from contact import views
from django.conf.urls import url urlpatterns = [
url(r'^contact/$',views.contact),
]

配置完成之后,访问是只要加上父url里的域名和子url里的域名就可以了:如:127.0.0.1:60500/contact/contact

3、调试模式中的特例

在Django调试模式下可以修改URLconf,我们只要在运行时检查DEBUG配置项的值

例如:

from django.conf import settings
from django.conf.urls import url,patterns
from . import view urlpatterns = patterns('',
(r'^$',view.homePage),
(r'^time/$',view.current_datetime),
)
if settings.DEBUG:
urlpatterns += patterns('',
(r'^debuginfo$',view.debuginfo),
)

 ——>

或者使用partterns列表:

from django.conf import settings
from django.conf.urls import url,patterns
from . import view urlpatterns = [
url(r'^information/$',view.info),
url(r'^time/$',view.currentTime),
] if settings.DEBUG:
urlpatterns .append(url(r'^debuginfo/$',view.debuginfo),)

4、使用命名组

  之前的例子中我们都使用的无命名的正则表达式组,接下来我们来使用命名正则表达式组来捕获url,并将其作为关键字参数传送给视图,在python正则表达式中,命名的正则表达式组的语法是(?P<name>pattern),其中name是组的名字 而pattern是匹配的某个模式,  

from django.conf.urls import url    #导入 django.conf.urls 模块下的url类
#from . import view #绑定 URL 与视图函数(view.py文件)
from django.contrib import admin from firstSite.view import current_datetime,hour_ahead admin.autodiscover()
from django.conf.urls import url,include,patterns
from firstSite import view
urlpatterns = [
url(r'^time/plus/(\d{1,2})$',view.hour_ahead),#url(r'^time/plus/(?P<offset>\d{1,2})$',view.hour_ahead),
url(r'^ago/(\d{2})/(\d{2})$',view.Month_archive)#url(r'^ago/(?P<year>\d{2})/(?P<month>\d{2})/$',view.Month_archive),
]

这两种方式第一种就是使用无名组的URLconf,第二种就是使用命名组的URLconf;他们的作用是一样的,唯一的差别就是:第二种取得值是以关键字参数 的方式而不是以位置参数的方式传递给视图函数;

函数的调用则为:

Month_archive(request,'2017','03')
Month_archive(request,year='',month='') 

使用命名组的好处:

(1)使你的URLconf显得更加清晰,减少搞混参数次序的潜在的bug

(2)在函数定义中对参数进行重新排序

(3)可读性强

5、理解匹配/分组算法

(1)如果有任何命名组,Django会自动忽略非命名组使用命名组;

(2)否则,Django会把所有非命名组以位置参数的形式传递;

(3)在以上两种情况,Django同时会以关键字参数的方式传递一些额外参数;

6、传递额外的参数到视图函数中

当我们的视图函数被复用只有少数部分不同,如需要使用不同的模板,

django-高级视图和url配置的更多相关文章

  1. Django笔记 —— 高级视图和URL配置

    最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...

  2. Django之视图和URL配置

    1.在创建项目时,Django会自动创建URL配置,在urls.py文件中 文件的默认内容如下所示: """mysite URL Configuration The ur ...

  3. django(二)视图和URL配置

    创建一份视图: 在上一节,使用django-admin.py startproject制作的mysite文件夹中,创建一个叫做views.py的空文件.这个Python模块健柏寒这一章的视图. vie ...

  4. django1.8高级视图和URL配置读书笔记

    一.在url配置中可以通过导入视图函数来将url模式和对应的函数对象进行映射,也可以通过字符串的形式进行映射.字符串包含应当是模块名.函数名的组合例如: 之前: from mysite import ...

  5. Django:视图和URL配置

    一.视图      1.在mysite文件夹下.创建views.py文件(文件名称没有特别的要求): from django.http import HttpResponse def hello(re ...

  6. Django学习day4——视图和URL配置

    创建一个简单的hello world 在day3中我们第一次运行了服务器,里面是一个django的欢迎页面,那是因为我们没有配置URL和视图,django在底层会自动跳转这个页面上 我们在mysite ...

  7. 视图和URL配置

    视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...

  8. 视图的URL配置,找不到我设置的第一个Page

    问题:视图的URL配置,找不到我设置的第一个Page 我的代码如下: 结果访问/test/时说找不到这个page   原因:patterns方法的参数有两个,一个是prefix,一个是参数元祖,详见下 ...

  9. Python的Django框架中的URL配置与松耦合

    Python的Django框架中的URL配置与松耦合 用 python 处理一个文本时,想要删除其中中某一行,常规的思路是先把文件读入内存,在内存中修改后再写入源文件. 但如果要处理一个很大的文本,比 ...

随机推荐

  1. ThinkServer TD340服务器安装操作系统[转]

    一:服务器概况 服务器是联想旗下ThinkServer品牌TD340型号服务器,服务器标配32G内存,1T硬盘.其中服务器使用RAID(磁盘阵列)技术,拥有一个RAID卡,服务器标配一个大小为1T的磁 ...

  2. [转]linux下centos服务器安全设置

    引言: 我们必须明白:最小的权限+最少的服务=最大的安全 所以,无论是配置任何服务器,我们都必须把不用的服务关闭.把系统权限设置到最小话,这样才能保证服务器最大的安全.下面是CentOS服务器安全设置 ...

  3. CSS学习(一)

    /*</br> * color</br> * background-color background-image background-repeat background-po ...

  4. JavaScript之图片懒加载的实现

    图片懒加载指的是在浏览过程中随着需要才被加载出来,例如某宝上面浏览商品时,会伴随很多的图片,如果一次全部加载出来的话,显然资源有些浪费,并且加载速度也会相对降低,那么懒加载的实现很重要.即随着浏览翻阅 ...

  5. 使用keepAlive对上下拉刷新列表数据 和 滚动位置细节处理 - vue

    [前言] 使用vue处理项目中遇到列表页面时,之前项目中总会有一些细节问题处理得不太好,这里总结一下,以便优化以后的代码.如下: 1. 使用mint-ui中的LoadMore组件上下拉刷新时,有时无法 ...

  6. CU社区shell板块awk十三问整理

    CU社区shell板块awk十三问整理 一.RS="" 当 RS="" 时,会将\n强制加入到FS变量中,因为RS为空时,是将连续多空行作为分隔符,近似于\n\ ...

  7. SQL语句-create语句

    SQL语法基础 Create database语句 Create database语句是在MySQL实例上创建一个指定名称的数据 库,create schema语句的语义和create databas ...

  8. HTML5之Notification简单使用

    var webNotification = { init: function() { if(!this.isSupport()) { console.log('不支持通知'); return; } t ...

  9. 同一台机器上多个tomcat启动造成的内存溢出问题的解决方法。

    加下面这句话就行了,我是WIN10+双tomcat+nginx(本地站点),无压力.在编译器的vm option里面加哦. -server -Xms512m -Xmx1024m -XX:PermSiz ...

  10. Sonar项目主要指标以及代码坏味道详解

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6766994.html 众所周知Sona ...