一、Django表单(form)请求:

打开的时候默认是GET请求,获取form表单的内容。

点提交的时候是POST请求,提交form表单的内容。

根据以上区别来编写获取表单内容:

from django.shortcuts import HttpResponse
from django.shortcuts import render, redirectdef login(request):# request包含用户提交的所有信息。error_msg = ''if request.method == 'POST':user = request.POST.get('user', None)        //使用get方法获取'user'键值,如果没有user键,赋值Nonepwd = request.POST.get('pwd', None)          //get方法里的user和pwd是form表单里input对象的name属性。if user == '123' and pwd == '123456':return redirect('http://www.baidu.com')else:error_msg = '用户名或密码错误'return render(request, 'login.html', {'error_msg':error_msg})

二、{{key}}

{{}}在html文件中指定key,通过views.py传递字典,html在客户端显示的是典对应的key值。

HTML

<span>{{error_msg}}<span>

三、HTML读取字典数据和列表

字典:使用  .  读取读典key:  dict_name.key

列表:使用 .索引读取,list_name.0

views.py

def show(request):dict_name = {'name':'樱', 'age':19, 'mail':'ying@126.com', 'fav':['football', 'sing', 'cook']}return render(request,'home.html', dict_name)

字典HTML:

<p>{{dictname.name}}</p>            \\樱
<p>{{dictname.age}}</p>             \\19
<p>{{dictname.mail}}</p>            \\ying@126.com

列表HTML

<p>{{list_name.0}}</p>            \\football
<p>{{list_name.1}}</p>            \\sing
<p>{{list_name.2}}</p>            \\cook

四、HTML中for循环:

使用{%%}标记循环语句,并且使用{%endfor%}声明循环结束

{%for k, v in dict_name%}\\HTML内容<p>{{k}}:{{v}}</p>
{%endfor%}
//views.py
return render(request, 'index.html', {'list_name':['a','b','c']}){%for i in list_name%}<p>{{i}}</p>        //a,b,c
{%endfor%}

五、HTML中if循环:

{%if 条件1 %}\\HTML内容<p>{{k}}:{{v}}</p>
{%elif 条件2%}...
{%else%}...
{%endfor%}

六、views.py获取html模板传入的数据

html提交的数据方法有很多种,一般使用两类:POST和GET

1、POST方法请求:一般用于修改、更新数据。

2、GET方法请求:以网址显示方式提交,例:http:\\localhost\hw\?id=1&name=david,一般用于向服务器请求数据

3、其它。put,delete,head,option....

4、上传文件类型的数据,在Form表单指定-->enctype='multipart/form-data'

views.py获取数据方法:

1、POST.get('name','默认值'),获取元素的唯一值,如果没有,赋默认值

2、POST.getlist('name','默认值'),获取多值元素的列表,如果没有,赋默认值

def get_data(request):get_post = request.POST.get('user_name')             # 获取HTML元素名为user_name的值 ,<input name='user_name'>get_post = request.POST.get('user_name',None)        # 找不到user_name元素,返回Noneget_list = request.POST.getlist('favor')                       # 获取checkbox,multiple的HTML值get_get = request.GET.get('user_name')             # 同上get_get = request.GET.get('user_name',None)        # 同上get_get = request.GET.getlist('user_name')

3、FILES.get('name'),获取上传的文件对象,默认显示文件名,
                obj.name显示上传的文件名,
                obj.chunks()迭代器读取数据块,使用for循环读取所有数据,for r in obj.chunks()

def get_file(request):obj = request.FILES.get('file_obj')f = open(obj.name, 'wb+')        # 以上传的文件名命名。for i in obj.chunks():           # 循环读取chunks迭代器数据。f.write(i)f.close()

七、views.py函数返回网址:

1、render:HTML模板路径,格式:render(request,'HTML模板名',传递的字典)

2、redirect:返回一个完整的URL(本地或网络地址) ,格式:redirect('http://www.baidu.com')或redirect('/test/') ,

            test前面的/代表根,不加/当前的下级目录

3、HttpResponse:返回HTML的字符串,格式:HttpResponse('<p>这只是一个例子</p>')

def show_data(request):v=1234# 站内跳转return render(request,'index.html',{"dict":v})# 站外跳转return redirect('http://www.baidu.com')# 跳转站内根路径,http://ip/blogreturn redirect('/blog')# 跳转站内当前路径下一级,比如当前是http://ip/show,跳转到http://ip/show/blogreturn redirect('blog/')# 直接返回HTML字符串。return HttpResponse('<p>警告!</p>')

上传文件示例:

urls.py

from django.conf.urls import url
from django.contrib import admin
import index.views
urlpatterns = [url(r'^admin/', admin.site.urls),url( r'^mains$',index.views.mains),            # http://ip/mians,跳转到index目录下的views.py下的mains函数## url( r'',index.views.mains),                        # http://ip,跳转到index目录下的views.py下的mains函数url(r'^mains/up$', index.views.rev_file)       # r'^  $'定义^开头$结尾,否则,所有包含此单词的地址都转向,容易混淆
]

index.html

使用了{{}},{%%},模板语言。同时上传

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="up" enctype="multipart/form-data" method="post">  //action,跳转到的网址,action="/up"代表 根目录+up;action="up"代表 当前网址+up//enctype,form表单可接收文件             <input type="text" name="user_name" placeholder="Input your name..." /><input name="up_file" type="file"/>//type="file",代表可以上传文件型数据<p>文件分类:软件<input type="checkbox" value="技术" name="f_type">HTML<input type="checkbox" value="HTML" name="f_type">编程<input type="checkbox" value="编程" name="f_type"></p>//创建多选框<input type="submit" value="提交">
</form>
{% if f_name %}        //使用if判断是否上传文件,上传文件,显示信息
<p><span style="font-style: italic">{{ u_name }}</span>,Your file:{{ f_name }} Upload Successful!</p>
分类:{% for i in f_type %}            //使用for读取选择的文件分类 {{ i }}{% endfor %}
{% else %}                           //未上传文件提示
<p><span>You don't upload file!</span></p>
{% endif %}
</body>
</html>

test/views.py

from django.shortcuts import render
import os
# Create your views here.def mains(request):# 首次打开网址,进入的index.html页面return render(request, 'index.html')def rev_file(request):# 接收form表单提交的数据f_name = ''u_name = ''f_type = ''if request.method == 'POST':f_obj = request.FILES.get('up_file', None)            # 获取file对象,print(f_obj)是文件名,但实际是对象,因为FILES定义了__repr__或__str__if f_obj:#如果有上传的文件f_name = f_obj.nameu_name = request.POST.get('user_name', None)f_type = request.POST.getlist('f_type')            #获取checkbox或multiple类型的option选项的数据f = open(os.path.join('upload', f_name), 'wb+')    #manage.py同级目录的upload文件夹for i in f_obj.chunks():                           #chunks(),迭代器,使用for读取f.write(i)f.close()return render(request, 'index.html', {'f_name': f_name, 'u_name': u_name, 'f_type': f_type})# 再返回index.html的内容,但浏览器网址会变,内容也会出现if语句的内容

request其它方法:

  request.GET
  request.POST
  request.method
  request.body     原始数据
  request.path # /upload/
  request.get_full_path() # /upload/?id=1
  request.META     网页原信息
  request.FILES     文件

Django模板语言-1:一个完整的数据获取例子相关推荐

  1. Django模板语言(译)

    原文地址:https://docs.djangoproject.com/zh-hans/2.1/ref/templates/language/ 翻译日期:2019年3月8日-2019年3月9日 by: ...

  2. Django模板语言相关内容

    Django模板语言相关内容 Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 在Django的模板语言 ...

  3. 小白必看!Django 模板语言基础来啦

    作者 | 单雨 责编 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 前言 为了实现模板封装和复用,提高HTML界面调试便捷性以及前后端解耦等目标,Django定义了自己的网络模板语言. 当 ...

  4. Django模板语言 以及使用

    Django 模板语言 文章目录 Django 模板语言 模板的传参 模板的变量 XSS攻击 反射型xss 存储型xss DOM xss 模板的标签 过滤器 模板的继承 url 反向解析 模板的传参 ...

  5. 一个完整的AjaxPro例子

    一个完整的AjaxPro例子 源码下载 1.配置文件设置: <httpHandlers> <add verb="*" path="*.ashx" ...

  6. Django模板语言

    常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} 变量名由字母数字和下划线组成. 点(.)在模板语言中有特殊的含义, ...

  7. Django模板语言中的自定义方法filter过滤器实现web网页的瀑布流

    模板语言自定义方法介绍 自定义方法注意事项 Django中有simple_tag 和 filter 两种自定义方法,之前也提到过,需要注意的是 扩展目录名称必须是templatetags templa ...

  8. Django模板语言及视图

    1.Django的模板语言 1.{{ name }} -->变量 2.for循环: {% for i inbook_list %} {{ forloop.counter }} {{ forloo ...

  9. Django(模板语言-自定义filter和simple_tag)

    filter过滤器的主要形式:变量|函数,意思是将变量交给函数处理,而自定义filter就是自己定义函数,因为用到已有的很少. 1.在当前app中创建templatetags模块(包:带__init_ ...

最新文章

  1. Scrum vs Kanban,如何选择?
  2. 大学计算机数学基础2,大学计算机基础(第2版)
  3. 计算机二级vb知识点汇总,计算机二级vb基础知识考点整理(13页)-原创力文档...
  4. java泛型的作用和实现原理_java泛型的作用及实现原理
  5. XPO 学习资料(转摘)
  6. MySQL数据库密码重置
  7. 这些黑科技让百姓安心、安全过年
  8. 100台服务器分发文件,通过简单shell脚本+rsync实现单一文件分发到多台服务器
  9. Java中hashCode和equals方法的正确使用
  10. 定时任务重启后执行策略_定时任务时间过长会不会影响下次的执行? 第331篇...
  11. H5混合开发二维码扫描以及调用本地摄像头
  12. CSDN CODE 将于本月底彻底关闭,请尽快迁移到码云
  13. 顺序结构—— 华氏温度转摄氏温度
  14. python根据经纬度计算两点之间距离
  15. c语言aps审核,APS考官最讨厌的几类人
  16. RealityCapture场景建模笔记
  17. 一秒钟快速在PPT里插入100张图片
  18. python 命令行解析模块_Python命令行解析模块详解
  19. 亚马逊英国站小风扇UKCA认证办理流程
  20. 【贪心策略】区间选点问题

热门文章

  1. 解决selenium遇到火狐浏览器自动打开下载文件
  2. 【每日早报】20200113
  3. or在python中是什么意思_Python中and和or的用法
  4. 安全自动化企业网络架构 (毕设分享)
  5. Python 网络爬虫实战:猫眼电影 38950 条评论数据告诉你《无名之辈》是否值得一看?
  6. 线程【3】- 多线程中PTHREAD_MUTEX_RECURSIVE的理解
  7. CNI(Container Network Plugin)
  8. 机械制造与自动化类毕业论文文献有哪些?
  9. Postgresql的Listen-Notify机制
  10. html邮件怎么发送邮件,HTML邮件怎么发送邮件