美文网首页Python学习之旅
Django 获取传递数据

Django 获取传递数据

作者: 依旧丶森 | 来源:发表于2017-12-23 19:20 被阅读9次

    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   
      

    相关文章

      网友评论

        本文标题:Django 获取传递数据

        本文链接:https://www.haomeiwen.com/subject/xrmqgxtx.html