zoukankan      html  css  js  c++  java
  • 05 Django 视图与网址进阶

    一 、在网页上做加减法

    1. 采用 /add/?a=4&b=5 这样GET方法进行

    我们修改Django_App/views.py文件

    from django.shortcuts import render
    from django.http import HttpResponse
     
    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

    接着修改Django_App/urls.py

    from django.conf.urls import url
    from django.contrib import admin
    from Django_App import views
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
        url(r'^index/',views.index),
        url(r'^$',views.index),
        url(r'^login',views.login),
        url(r'^add/$',views.add,name='add'),
    ]

    打开网址:http://127.0.0.1:8000/add/ 就可以看到

    MultiValueDictKeyError at /add/

    这是因为我们并没有传值进去,我们在后面加上 ?a=4&b=5,即访问 http://127.0.0.1:8000/add/?a=4&b=5

    就可以看到网页上显示一个 9,试着改变一下a和b对应的值试试看?

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

    首先修改Django_App/views.py文件 

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

    接着修改Django_App/urls.py

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

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

    二、定义视图函数

    app下views.py

    def func(request):
                    # request.method   GET / POST
                    
                    # http://127.0.0.1:8009/home?nid=123&name=alex
                    # request.GET.get('',None)   # 获取请求发来的而数据
                    
                    # request.POST.get('',None)
                    
                    # return HttpResponse("字符串")
                    # return render(request, "HTML模板的路径")
                    # return redirect('/只能填URL')
  • 相关阅读:
    02-Maven安装配置
    01-Maven功能特点
    安装Jenkins服务
    Python操作Saltstack
    基于Python自动上传包到nexus仓库
    避免代码merge后无法构建发布(GItlabCI + Jenkins)
    SonarQube-Centos环境设置为系统服务
    SonarQube配置LDAP认证集成
    Centos7 搭建Go语言编译环境
    OpenShift-EFK日志管理
  • 原文地址:https://www.cnblogs.com/jasonli-01/p/6675149.html
Copyright © 2011-2022 走看看