1. FORM 表单传递数据(post或get ,一般用post传递数据)
- 普通数据
- form 表单提交数据
<form action=" 传递数据到达地址" method="post"> <!-- Django post方法传递数据需要令牌,否则报错 --> {% csrf_token %} title:<input type="text" name="title"><br> content: <textarea name="content" id="" cols="30" rows="10"></textarea> <button type="submit">提交</button> </form>
- 通过前端的 input 写入数据,在views视图处理函数接收
# GET / POST [' 前端input设置的对应数据 name '] p=request.GET[' title ']
- 文本文件或图片等文件
- 提交数据
<!-- 传递文件需要 enctype ,否则无法传递文件 --> <form action="" method="post" enctype="multipart/form-data"> {% csrf_token %} 选择文件:<input type="file" name="img" ><br> <button type="submit">上传</button> </form>
- 接收文件
cover= request.FILES['img']
- 一般文件上传都已经在 models 定义了,保存在数据库指定的文件夹里,方便获取
#原始上传文件需要在程序设置打开文件,将上传的文件写入文件保存. # django只需通过类属性设置为文件格式。 file=models.FileField(upload_to='./static/') #后边的是保存路径 #当上传的只要图片时,把属性改为: head_img=models.ImageField(upload_to='./static/head/')
2. AJAX 传递数据
-
提交数据
普通的ajax 传递方法- 要修改 setting 配置
# django 用 Ajax 需要屏蔽 MIDDLEWARE = [# 'django.middleware.csrf.CsrfViewMiddleware',]
-
接收返回数据
- 添加接收与返回需要的模块 views
#给用户返回json格式数据,前后端分离。 #如果不经model_to_dict 转化,就会报格式没有序列化的错 from django.http import JsonResponse from django.forms.models import model_to_dict #say是一个对象 return JsonResponse(model_to_dict(say)) #如果返回其他变量或不需要返回数据 return JsonResponse({'a':1})
-
额外
- 限制函数的访问方法
#设置允许通过什么来访问服务器,如果访问方式不允许,服务器不处置。 from django.views.decorators.http import require_POST #函数限制只允许post访问: 前面加 @require_POST 其他限制方法类似。 @require_POST def index(request):
3. a标签(超链接)传递需要的数据参数
- 传递参数
#参数包含在链接中间,通过正则匹配 传递参数 <a href="/info/{{u.id}}/more/">详情</a>
- 接收参数
#通过路由的正则匹配获取传递的参数,存放在 u_id url(r'^(?P<u_id>\d+)/index/',views.index,name='index'), #在views视图处理函数接收参数 def index ( request, u_id )
补充
- 一个网页请求,可通过 if 判断请求的方式是 get 或 post ,返回不同的结果
if request.method == 'GET': ...... return elif request.method=='POST': ...... return
网友评论