zoukankan      html  css  js  c++  java
  • 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' ame='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参数第一部分),其他都自动变了

  • 相关阅读:
    go语言从例子开始之Example22.协程之通道
    go语言从例子开始之Example21.协程
    go语言从例子开始之Example20.错误处理
    go语言从例子开始之Example19.接口
    级联复制改成主从复制
    一主二从改成级联复制架构步骤
    mysql8.0 备分常用命令
    mysql8基于gtid导出导入搭建主从
    MySQL 8.0 配置mysql_native_password身份验证插件的密码
    mysql_config_editor 安全登录方式
  • 原文地址:https://www.cnblogs.com/chaoe/p/5981331.html
Copyright © 2011-2022 走看看