Django视图与网址传参
目的:采用/add?a=1&b=2 这样get/post方法进行
修改一下mysite/views.py文件
from django.shortcuts import render
from django.http import HttpResponse
def add(request):
a = request.GET.get('a',0)
b = request.GET.get('b',0)
c = int(a)+int(b)
return HttpResponse(str(c))
然后在urls.py文件里添加一条对应的网址
url(r'^add/$', 'mysite.mysite.add',name='add'),
接着启动服务器
python manage.py runserver 0.0.0.0:80
打开网址如:http://127.0.0.1/mysite/add/
如果提示 MultiValueDictKeyError at /add/ 那是因为没传入参数
我们在后面加上?a=1&b=2 即访问http://127.0.0.1/mysite/add/?a=1&b=2
就可以看到网页上返回一个计算后的数字....
采用/add/1/2/这样的网址方式
def add2(request,a,b):
c = int(a) + int(b)
return HttpResponse(str(c))
接着修改urls.py
url(r'^add/(\d+)/(\d+)/$', 'mysite.mysite.add2',name='add2'),
\d代表的是数字+代表的是出现1次或多次(详情请学习python正则表达式)
我们再次访问 http://127.0.0.1/mysite/add/4/5/
就可以看到网页上返回正确计算后的数字了
关于name='add'\name='add2' 中name的解释
现在的需求是要求/add/1/2/ 如果哪天要求改成/1_add_2/ 但是我们代码上已经定义了很多,如果更改代码的话,就会很麻烦 且容易出错
Python manage.py shell
>>> from django.core.urlresolvers import reverse
>>> reverse('add',args=(1,2))
'/add/1/2/'
>>> reverse('add2',args=(111,222))
'/add/111/222/'
reverse 接收url中的name做为第一个参数,我们在代码中就可以用reverse来获取对应的网址,只要对应的url的name不变,就不用改代码的地址
在网页模版中也是一样
不带参数的:
{% url 'name' %}
带参数的:
{% url 'name' 参数 %}
<a href="{% url 'add2' 4 5 %}">link</a>
上面的代码渲染最终的页面是
<a href="/add/4/5/">link</a>
这样就可以通过{% url 'add2' 4 5 %} 获取到对应的网址 /add/4/5/
当urls.py 进行更改,前提不改name(设置好就不要随意更改),获取的网址也会动态的跟着变,比如改成:
url(r'^new_add/(\d+)/(\d+)/$', 'calc.views.add2', name='add2'),
这时候{% url 'add2' 4 5 %} 就会渲染成/new_add/4/5/, reverse函数也是一样会获取新的网址,这样只需要改urls.py中的正则表达式(url参数第一部分),其他都自动变了
Django视图与网址传参的更多相关文章
- Django视图层之路由配置系统(urls)
视图层之路由配置系统(urls) URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表:你就是以这种方式告诉Django,对于这个U ...
- [diango]理解django视图工作原理
前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...
- 教您怎么从spring 官网下载参考文档
假如您使用spring,那么本经验可能帮助到您. 假如您使用spring的过程中,需要查询一些文档,那么本经验可能帮助到您. 假如您对下载spring的文档有疑惑,那么本经验可能帮助到您. 教您怎么从 ...
- Django 2.0 学习(03):Django视图和URL(下)
接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...
- 如何在django视图中使用asyncio(协程)和ThreadPoolExecutor(多线程)
Django视图函数执行,不在主线程中,直接 loop = asyncio.new_event_loop() # 更不能loop = asyncio.get_event_loop() 会触发 Runt ...
- Django 视图系统
Django 视图系统 概念 一个视图函数,简称视图,是一个简单的Python函数,用于接受Web请求并返回Web响应. 通常将视图函数写在project或app目录中的名为views.py文件中 简 ...
- 令Django 视图有默认 login_required
方法一 from django.template import RequestContext from django.shortcuts import render_to_response from ...
- 1.2、Django 视图与网址__进阶
Django 视图与网址进阶 1.1.简单使用: 把我们新定义的app加到settings.py中的INSTALL_APPS中 修改 HelloDjango/HelloDjango/settings. ...
- django视图缓存的实现
django视图缓存的实现 1,安装 pip install django-redis setting.py CACHES = { "default":{ "BACKEN ...
随机推荐
- 【转】 如何利用Cocos2d-x开发一个游戏
原文:http://blog.csdn.net/honghaier/article/details/7888592 这个问题的结果应该是一个流程.我将从一些长期的PC端游戏开发经验结合Cocos2d- ...
- Apache的RewriteRule规则详细介绍
R[=code](force redirect) 强制外部重定向 (rkyW z强制在替代字符串加上http://thishost[:thisport]/前缀重定向到外部的URL.如果code不指定, ...
- Hibernate: Truly Understanding the Second-Level and Query Caches--reference
I've written multiple articles here at Javalobby on the Hibernate O/R mapping tool, and they are usu ...
- iOS之pch文件的正确使用
在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件 ...
- java编程常用技术
一:将String字符串放在最前面 防止发生NullPointerException异常,我们通常把String字符串放在equals方法的左边来比较,这样可以有效的避免 空指针异常的发生. 第一种情 ...
- js事件(Event)知识整理[转]
事件注册 平常我们绑定事件的时候用dom.onxxxx=function(){}的形式 这种方式是给元素的onxxxx属性赋值,只能绑定有一个处理句柄. 但很多时候我们需要绑定多个处理句柄到一个事件上 ...
- ADO和ADO.NET有什么不同?
1.一些ADO中常见的类型比如RecordSet在ADO.NET中已经没有了,而且在ADO.NET中也新增了许多在传统ADO中找不到的直接对应的新类型(如数据适配器): 2.传统的ADO主要针对紧密连 ...
- 【转】为 XmlNode.SelectNodes 加上排序功能
测试资料: <Config> <Item a='/> <Item a='/> <Item a='/> <Item a='/> <Ite ...
- linux gpg 使用笔记
http://linux.chinaunix.net/techdoc/system/2009/04/30/1109541.shtml 一.GnuPG的简介 我们在网上的发送的邮件是明文的,可以 ...
- 怎么在ubuntu上使用pidgin登陆QQ
1.Ubuntu pidgin安装webqq 首先安装webqq的通讯协议: sudo add-apt-repository ppa:lainme/pidgin-lwqq sudo apt-get u ...