目的:采用/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视图与网址传参的更多相关文章

  1. Django视图层之路由配置系统(urls)

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

  2. [diango]理解django视图工作原理

    前言:正确理解django视图view,模型model,模板的概念及其之间的关联关系,才能快速学习并上手使用django制作网页 本文主要讲解自己在学习django后对视图view的理解 在进入正文之 ...

  3. 教您怎么从spring 官网下载参考文档

    假如您使用spring,那么本经验可能帮助到您. 假如您使用spring的过程中,需要查询一些文档,那么本经验可能帮助到您. 假如您对下载spring的文档有疑惑,那么本经验可能帮助到您. 教您怎么从 ...

  4. Django 2.0 学习(03):Django视图和URL(下)

    接上篇博文,继续分析Django基本流程. 编写第一个(view)视图函数 1.打开文件polls/views.py,输入下面的Python代码: from django.http import Ht ...

  5. 如何在django视图中使用asyncio(协程)和ThreadPoolExecutor(多线程)

    Django视图函数执行,不在主线程中,直接 loop = asyncio.new_event_loop() # 更不能loop = asyncio.get_event_loop() 会触发 Runt ...

  6. Django 视图系统

    Django 视图系统 概念 一个视图函数,简称视图,是一个简单的Python函数,用于接受Web请求并返回Web响应. 通常将视图函数写在project或app目录中的名为views.py文件中 简 ...

  7. 令Django 视图有默认 login_required

    方法一 from django.template import RequestContext from django.shortcuts import render_to_response from ...

  8. 1.2、Django 视图与网址__进阶

    Django 视图与网址进阶 1.1.简单使用: 把我们新定义的app加到settings.py中的INSTALL_APPS中 修改 HelloDjango/HelloDjango/settings. ...

  9. django视图缓存的实现

    django视图缓存的实现 1,安装 pip install django-redis setting.py CACHES = { "default":{ "BACKEN ...

随机推荐

  1. ABAP 常用系统变量

    SY-ABCDE 常量,A-Z字母表SY-BATCH 后台的程序运行SY-COLNO:当前选定列的列号SY-CPAGE 列表的当前显示页SY-CUCOL 屏幕,PAI 的水平光标位置SY-CUROW: ...

  2. 学习笔记之APACHE ANT

    http://baike.baidu.com/link?url=KkOWkH_nMVJRbd4oj-aIHMVL4HR-s7fqm3i2brUcZzBinwUXjZgzPcYIWz5qFNNvjait ...

  3. requestCode 和 resultCode .

    OK,代码如上,可能这个时候还会有点疑问,关于参数的疑问.直接看android sdk 帮助说得更清楚.我发现网上有些文章还有吧 requestCode 和 resultCode 混淆说明错的. st ...

  4. Debian Linux下如何以root账号登录桌面

    I Debian Linux 方法有两种,一是图形界面方式设置,一是命令行设置: A. 图形界面方式: GNOME桌面下:打开“系统主菜单“,选择”系统>系统管理>登录窗口”,在弹出的窗口 ...

  5. java_Cookie添加和删除

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  6. oracle数据库管理员简介、导入数据与导出数据

    数据库管理员: sys和system的权限区别:sys:所有oracle的数据字典的基表和视图都存放在sys用户中,这些基表和视图对于oracle的运行时至关重要的,由数据库 自己维护,任何用户都不能 ...

  7. Android学习之Activity初步

    Activity作为Android的第一步接触的概念,在学习中将初步的认识总结下来,以便后续的回顾与反思. 1.在用Android Studio生成第一个helloworld应用程序运行在手机上时,发 ...

  8. JAVA_FastJson

    package com.qf.mobiletrain01; import java.util.List; import com.alibaba.fastjson.JSON; class Student ...

  9. 如何使用gcc编译器

    开始... 首先,我们应该知道如何调用编译器.实际上,这很简单.我们将从那个著名的第一个C程序开始. #include <stdio.h> int main() { printf(&quo ...

  10. linux基于file的logger

    我们可能会遇到这样的问题:即写出的代码可能需要编译成动态连接库并在不同运行环境下运行,而这些运行环境下log的输出方式可能不同,一种运行环境的log方式在另一种运行环境下可能无法输出.而为保证多种运行 ...