Django获取传送数据

作者: 不一样的丶我们 | 来源:发表于2018-01-03 19:29 被阅读138次

    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']
      
      • 一般文件上传都在model里面定义了,保存在数据库指定的文件夹里面,方便获取.
      # 原始上传文件需要在程序设置打开文件,将上传的文件写入文件保存.
        # django只需通过类属性设置为文件格式。
        file = models.FileField(upload_to='./static/')  # 后边的是保存路径
        # 当上传的只要图片时,把属性改为:
        head_img = models.ImageField(upload_to='./static/head/')
      

    AJAX传送数据

    • 提交数据~普通的ajax传递方法
      • 要修改settings配置
      # 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):
      
      

    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 )
      pass
    

    补充

    • 一个网页请求,可通过if判断请求的方式是GET或POST,返回不同的结果
    if request.method == 'GET':
        ......
        return 
    elif request.method=='POST':
        ......
        return   
    

    Django反解析路由

    • 当一个函数处理完,需要返回一个页面,但是这个页面还有自己特有的数据需要展示,此时需要调用显示这个页面自己的处理函数
        # 引入模块:
        from django.shortcuts import redirect
        # 反向解析,直接可调用 name='名字' 的url路由处理函数。
        from django.core.urlresolvers import reverse
    
        # 返回 app_name='mysess' 的 name='index' 的处理函数
        return redirect(reverse('mysess:index'))
    

    相关文章

      网友评论

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

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