• 3、Django 视图


     视图的定义:

    1. 视图接受web的请求,并且返回给web一个响应。
    2. 视图就是一个python函数,被定义在views.py中。
    3. 响应可以是一张网页的HTML内容,一个重定向,一个404错误等等

    处理过程:

    在浏览器输入url(www.test.com/1/100)  ==> django接受到请求,获取地址去掉域名和端口 ==> 匹配路径/1/100 ==> 匹配到后调用veiws函数对应的方法  ==> 函数获取到url穿过来的值并返回一个响应。

    一、URLconf

    1、在settings.py文件中通过ROOT_URLCONF指定根级url的配置

    ROOT_URLCONF = 'test1.urls'
    
    • urlpatterns是一个url()实例的列表
    • 一个url()对象包括:
      • 正则表达式
      • 视图函数
      • 名称name
    • 编写URLconf的注意:
      • 若要从url中捕获一个值,需要在它周围设置一对圆括号
      • 不需要添加一个前导的反斜杠,如应该写作'test/',而不应该写作'/test/'
      • 每个正则表达式前面的r表示字符串不转义

    二、视图函数

    传参:

    # 传递多个参数
    url(r'^(d+)/(d+)/(d+)/$',views.detail),
    
    # 传递关键字参数。
    url(r'^(?P<p1>d+)/(?P<p2>d+)/(?P<p3>d+)/$',views.detail),
    
    html中传参:
    <a herf="/booktest/getTest2/?a=1&b=2&c=3">test2</a>

    views视图中获取参数:

    def details(request,a1,b1,c1):
        request.GET['a']
        request.GET['b']
        request.GET['c']
        context = {"a":a1,"b":b1,"c":c1}
        return render(request,'xxx/xxx.html',context)
    

    GET  一键多值:

    request.GET.getlist('a') 

    实例:

    ### postTest1.html 中定义:
    <form method="post" action="/bookttest/postTest2/">
    {% csrf_token %} 用户名:<input type="text" name="uname"> <br> 密码: <input type="password" name="upwd"> <br> 性别: <input type="radio" name="ugender" value="男" checked="checked"> 男
       <input type="radio" name="ugender" value="女" checked="checked"> 女 爱好: <input type="checkbox" name="uhobby" value="" >胸口碎大石 <input type="checkbox" name="uhobby" value="" >胸口碎大石 <input type="checkbox" name="uhobby" value="" >胸口碎大石 <br> <input type="submit" value="提交"> </form> ### views 接受值 def postTest2(request): uname = request.POST['uname'] upwd = request.POST['upwd'] ugender = request.POST.get('ugender') uname = request.POST.getlist('uhobby') contest={'uname':uname,'upwd':upwd}

     如403:

    三、Request对象

    四、Respense对象

    cookie 练习

    def cookieTest(request):
    	response = HttpResponse()
    	cookie = request.COOKIES
    	if cookie.has_key('t1'):
    		response.write(cookie['t1'])
    	# response.set_cookie('t1','abc')
    	return response
    

    url 跳转 

    def redTest1(request):
    	# return HttpResponseRedirect('/booktest/redTest2/')
    	return redirect('/booktest/redTest2/')
    
    def redTest2(request):
    	return HttpResponse('这是转向来的页面')
    

    五、状态保持

  • 相关阅读:
    paramiko使用
    requests防止中文乱码
    RESTful架构
    关于pandas
    echarts基础使用
    跨站请求伪造CSRF原理
    js将方法作为参数调用
    Newtonsoft.Json解析json字符串和写json字符串
    图片压缩
    sql去重
  • 原文地址:https://www.cnblogs.com/sunshine-long/p/12507517.html
Copyright © 2020-2023  润新知