zoukankan      html  css  js  c++  java
  • 2django 视图与网址进阶

    一、在网页中做加减法

    采用/add/?a=11&b=22这样get方法进行

    django-admin.py startproject zqxt_views
    cd zqxt_views
    python manage.py startapp calc

    我们修改一下视图文件views.py

    from django.shortcuts import render
    from django.http import HttpReponse
    
    def add(request):
        a=request.GET['a']
        b=request.GET['b']
        c=int(a)+int(b)
        return HttpResponse(str(c))

    注:request.GET 类似于一个字典,更好的办法是用 request.GET.get('a', 0) 当没有传递 a 的时候默认 a 为 0

    接着修改urls.py文件,添加一个网址来对应我们刚才新建的视图函数

    from django.conf.urls import url
    from django.contrib import admin
    from calc import views as calc_views

    urlpatterns=[
    url(r'^add/$',calc_views.add,name='add'),
    url(r'^admin/',admin.site.urls),
    ]


    启动服务python manage.py runserver 8002

    打开网址http://127.0.0.1:8002/add/ 

    报错因为没有传值

    改下网址 ?a=4&b=5,即访问 http://127.0.0.1:8002/add/?a=4&b=5

    在网页上显示一个9,试着改变a和b对应的值,得到不同的结果

    2、采用/add/3/4这样的网址和方式

    前面说过django支持优雅的网址

    我们接着修改views.py文件,再新定义一个add2函数

    def add2(request, a, b):
        c = int(a) + int(b)
        return HttpResponse(str(c))

    接着修改urls.py文件,再添加一个新的url

    url(r'^add/(d+)/(d+)/$',calc_views.add2,name='add2'),

    我们可以看到网址中多了 (d+), 正则表达式中 d 代表一个数字,+ 代表一个或多个前面的字符,写在一起 d+ 就是一个或多个数字,用括号括起来的意思是保存为一个子组(更多知识请参见 Python 正则表达式),每一个子组将作为一个参数,被 views.py 中的对应视图函数接收。

    我们再访问 http://127.0.0.1:8002/add/4/5/ 就可以看到和刚才同样的效果,但是这回网址更优雅了

  • 相关阅读:
    es6 yield简单使用
    es6 generator 函数中的yield理解
    es6 promise的使用,同时处理多个异步请求
    es6 filter的使用
    ES6中reduce的计算过程
    es6函数的参数展开
    搭建基于express框架的运行环境
    通过node.js搭建服务,访问html静态页面
    docker compose
    JDBCUtil
  • 原文地址:https://www.cnblogs.com/z-x-y/p/9661045.html
Copyright © 2011-2022 走看看