url用法
url中的name用法:
0.定义主rul.py
urlpatterns = [
url(r'^sinfors/', include('sinfors.urls', namespace="sinfors")),
url(r'^aptest/', include('aptest.urls', namespace="aptest")), #引用app aptest
url(r'^admin/', include(admin.site.urls)),
]
1.定义view.py
# -*- coding: UTF-8 -*-
from django.shortcuts import render
from django.http import HttpResponse,HttpResponseRedirect
from django.core.urlresolvers import reverse
# Create your views here. def add2(request,a,b):
c=int(a)+int(b)
return HttpResponse(str(c)) def add(request):
return render(request,'aptest/test01.html') def testvw(request):
return HttpResponse(u"aa!")
2.定义app(aptest)下的url.py
from django.conf.urls import url
from aptest import views as aptest #aptest是app的名称,主url中已引用该app名称
urlpatterns = [
url(r'^$', aptest.index, name='index'),
url(r'^add2/(\d+)/(\d+)/$', aptest.add2, name='add2'),
url(r'^add/$', aptest.add, name='add'),
url(r'^test011/$', aptest.testvw, name='testname'), #name和url是不同的
]
访问 http://192.168.50.74/aptest/test011/ ,调用aptest的view中的testvw视图
3.在模板中引用该url
<!DOCTYPE html>
<html> <body>
<caption>tt <a class="text-info" href="{% url 'aptest:testname' %}">test01</a></caption> <!-- 通过url中定义的name(testname)进行调用,这样该url可以随意改动(比如test011可以改为其他),模板中的调用却不需要进行任何改动 -->
<caption>add22 <a class="text-info" href="{% url 'aptest:add2' 3 44 %}">add2</a></caption> <!-- 3 44 是add2视图的两个参数 -->
</body>
</html>
在url中提供参数:
url(r'^qlusers/(?P<luser>\w+)/(?P<ldate>\d{8})/$', views.mgmt,{'GET': views.mgmt_get_view,'POST': views.mgmt_post_view},name='luserslog'),
访问该url:http://10.16.2.4/appname/qlusers/zhangsan/20160728
luser参数接收字母格式
ldate参数接收8个数字
如下view中接收到一个dict格式字符串:kwargs为{'luser':'zhangsan','ldate':'20160728'}
view:
def mgmt(request,*args,**kwargs):
mgmt_get_view = kwargs.pop('GET', None) #return None if GET not exists.
mgmt_post_view = kwargs.pop('POST', None)
model = kwargs.pop('model', None)
if request.method == 'GET' and mgmt_get_view is not None:
return mgmt_get_view(request, model,args,kwargs) #将model传递到get view
elif request.method == 'POST' and mgmt_post_view is not None:
return mgmt_post_view(request, model)
#return vmmgmt_post_view(request, *args, **kwargs)
raise Http404 #handle get request.
def mgmt_get_view(request,model,args,kwargs):
if model is not None:
obj_list = model.objects.all() #从url中的 model 参数接收到具体的model类。模板中要使用 obj_list 变量做for循环
counts = model.objects.count()
assert request.method == 'GET'
if kwargs is not None:
if 'luser' in kwargs and 'ldate' in kwargs:
下面是一个使用无名组的 URLconf 的例子:
from django.conf.urls.defaults import *
from mysite import views urlpatterns = patterns('',
(r'^articles/(\d{4})/$', views.year_archive),
(r'^articles/(\d{4})/(\d{2})/$', views.month_archive),
)
下面是相同的 URLconf,使用命名组进行了重写:
from django.conf.urls.defaults import *
from mysite import views urlpatterns = patterns('',
(r'^articles/(?P<year>\d{4})/$', views.year_archive),
(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', views.month_archive),
)
这段代码和前面的功能完全一样,只有一个细微的差别: 取的值是以关键字参数的方式而不是以位置参数的方式传递给视图函数的。
例如,如果不带命名组,请求 /articles/2006/03/ 将会等同于这样的函数调用:
month_archive(request, '2006', '03')
而带命名组,同样的请求就会变成这样的函数调用:
month_archive(request, year='2006', month='03')
使用命名组可以让你的URLconfs更加清晰,减少搞混参数次序的潜在BUG,还可以让你在函数定义中对参数重新排序。 接着上面这个例子,如果我们想修改URL把月份放到 年份的 前面 ,而不使用命名组的话,我们就不得不去修改视图 month_archive 的参数次序。 如果我们使用命名组的话,修改URL里提取参数的次序对视图没有影响。
url用法的更多相关文章
- css cursor url用法格式详解
css cursor url用法格式:css:{cursor:url('图标路径'),auto;} //IE,FF,chrome浏览器都可以 实例代码:html{cursor: url("h ...
- Request.url用法
原文:Request.url用法 我們在開發網頁應用程式,時常需要去解析網址(Request.Url)的每個片段,進行一些判斷.例如說 "http://localhost:1897/News ...
- day64 url用法以及django的路由系统
此篇博客是以备后查的,用到的时候记得过来查找即可! 路由系统:就是我们的django项目创建的时候自带的那个urls.py 它本身里面是映射的对应关系,一个大的列表里面,一个个元祖,元祖里面是url或 ...
- Data URL简介及Data URL的利弊
之前写过一篇“漫谈前端优化”的文章,里面提到过DataUrl,粗鲁的描述了下,感觉不甚详焉,所以这几天也总结了这方面的知识,参考一些资料,补充一篇文章在这里,对这方面的资料来说,也是一种强化记忆应用: ...
- java通过java.net.URL发送http请求调用接口
一般在*.html,*.jsp页面中我们通过使用ajax调用接口,这个是我们通常用的.对于这些接口,大都是本公司写的接口供自己调用,所以直接用ajax就可以.但是,如果是多家公司共同开发一个东西,一个 ...
- 【转】Data URL和图片,及Data URI的利弊
Data URL给了我们一种很巧妙的将图片“嵌入”到HTML中的方法.跟传统的用img标记将服务器上的图片引用到页面中的方式不一样,在Data URL协议中,图片被转换成base64编码的字符串形式, ...
- wordpress 获取分类ID,分类标题,分类描述,分类链接url函数
get_cat_ID() 根据分类名称获取分类ID ///// get_cat_name() 根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...
- Node.js GET/POST对应的url/query-string常用的方法介绍
<一>,在学node.js--GET/POST请求时,先看模块url和query-string的用法 1. 模块url用法,一般用于解析get请求. parse: [Function: u ...
- find命令详解
find命令详解 来源: ChinaUnix博客 日期: 2008.07.25 16:04 (共有条评论) 我要评论 [url=http://www.sudu.cn/web/host.php] ...
随机推荐
- linux环境下编译C++ 程序
GCC(GNU Compiler Collection)是Linux下最主要的编译工具,GCC不仅功能非常强大,结构也异常灵活.它可以通过不同的前端模块来支持各种语言,如:Java.Fortran.P ...
- MySQL查看所有视图的命令
有时为了查看特定数据库中所建立的所有视图,可以使用这个命令: 因为,视图其实就是一张虚拟的表,所有也可以认为是一张表,所有是 show table, 而它由于普通的表有所不同,所以有 status ...
- lucene源码分析(5)lucence-group
1. 普通查询的用法 org.apache.lucene.search.IndexSearcher public void search(Query query, Collector results) ...
- java.util.Collection源码分析和深度讲解
写在开头 java.util.Collection 作为Java开发最常用的接口之一,我们经常使用,今天我带大家一起研究一下Collection接口,希望对大家以后的编程以及系统设计能有所帮助,本文所 ...
- Node.js进程管理之进程集群
一.cluster模块 Node.js是单线程处理,对于高并发的请求怎么样能增加吞吐量呢?为了提高服务器的利用率,能不能多核的来处理呢?于是就有了cluster模块. cluster模块可以轻松实现运 ...
- hadoop学习笔记(三):hadoop文件结构
hadoop完整安装目录结构: 比较重要的包有以下4个: src hadoop源码包.最核心的代码所在目录为core.hdfs和mapred,他们分别实现了hadoop最重要的3个模块:基础公共库.H ...
- Firebird 手动安装 Legacy_Auth 登陆认证
下载官方发布的最新版本:V3.0.4 或者下载还没正式发布的下个版本(但已经修复了一些bug):V3.0.5 下载后解压缩,修改配置文件Firebird.conf的登陆认证为Legacy_Auth:这 ...
- elasticsearch环境搭建
学习elasticsearch有一段时间了,整理一些学习的笔记以备忘. 以下内容都是在windows环境下的操作. 一,安装一个较新版本的java,我本地安装的java 8. 二,安装elastics ...
- 解决 Jquery UI Tooltip 用在Select 的BUG
今天遇到一个奇葩问题, 在chrome下一切正常的 页面,在IE 下Select无法选中! 是的 ,就是无法选中!!! 效果就是这样的.http://jsfiddle.net/slolife/dp4 ...
- 【转载&&干货】Noip应试技巧
NOIP应试技巧 如何看待别人的经验? 我想大家都有台上的学长滔滔不绝,但是自己在台下漠不关心,或是老师考试前的叮嘱说完一会儿功夫就忘记了的经历吧.所以,有可能我接下来的所说的话,一到考场上就全部忘记 ...