markdown [Django前后台的数据传递]#学习笔记#Web编程#Django

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了markdown [Django前后台的数据传递]#学习笔记#Web编程#Django相关的知识,希望对你有一定的参考价值。

# [Django 前后台的数据传递]#学习笔记 #Web编程 #Django

## **学习笔记**

Django 从后台往前台传递数据时有多种方法可以实现。

最简单的后台是这样的:

```python
from django.shortcuts import render

def main_page(request):
    return render(request, 'index.html')
```

这个就是返回 index.html 的内容,但是如果要带一些数据一起传给前台的话,该怎么办呢?

### 一 view -> HTML 使用 Django 模版

这里是这样:后台传递一些数据给 html,直接渲染在网页上,不会有什么复杂的数据处理(如果前台要处理数据,那么就传数据给 JS 处理)

Django 代码:

```python
from django.shortcuts import render

def main_page(request):
    data = [1,2,3,4]
    return render(request, 'index.html', {'data': data})
```

html 使用 `{{ }}` 来获取数据

```django
<div>{{ data }}</div>
```

可以对可迭代的数据进行迭代:

```django
{% for item in data%}
<p>{{ item }}</p>
{% endfor %}
```

该方法可以传递各种数据类型,包括`list`,`dict`等等。  
而且除了 `{% for %}` 以外还可以进行`if`判断,大小比较等等。具体的用法读者可以自行搜索。

### 二 view-> JavaScript

如果数据不传给 html 用,要传给 js 用,那么按照上文的方式写会有错误。  
需要注意两点:

> views.py 中返回的函数中的值要用 `json.dumps()` 处理
> 在网页上要加一个 `safe` 过滤器。

代码:  
views.py

```python
# -*- coding: utf-8 -*-

import json
from django.shortcuts import render

def main_page(request):
    list = ['view', 'Json', 'JS']
    return render(request, 'index.html', {
            'List': json.dumps(list),
        })
```

JavaScript 部分:

```django
var List = {{ List|safe }};
```

### 三 JavaScript Ajax 动态刷新页面

这个标题的意思是:网页前台使用 Ajax 发送请求,后台处理数据后返回数据给前台,前台不刷新网页动态加载数据

Django 代码:

```python
def scene_update_view(request):
    if request.method == "GET":
            name = request.GET.get('name')
            status = 0
            result = "Error!"
            return HttpResponse(json.dumps({
                "status": status,
                "result": result
            }))
```

JS 代码:

```js
function getSceneId(scece_name, td) {
  var post_data = {
    name: scece_name
  };

  $.ajax({
    url: "TEST/", //url路径
    type: "GET",
    data: post_data,
    success: function(data) {
      data = JSON.parse(data);
      if (data["status"] == 1) {
        setSceneTd(data["result"], scece_name, td);
      } else {
        alert(data["result"]);
      }
    }
  });
}
```

JS 发送 ajax 请求,后台处理请求并返回 status, result  
在 success: 后面定义回调函数处理返回的数据,需要使用 `JSON.parse(data)`  
可以将数据直接放在 url 里面

```js
(2)可以将数据直接放到URL里

<script language="JavaScript">
    function Ssss(id) {
        $.ajax({
            type: "GET",
            url: "test/?domain_name="+id,    //后台处理函数的url和数据
            success: function (result) {  //获取后台处理后传过来的result
                alert(result)
            },
        });
    }
</script>
```

以上是关于markdown [Django前后台的数据传递]#学习笔记#Web编程#Django的主要内容,如果未能解决你的问题,请参考以下文章

(转)Django 前后台的数据传递

django前后端的数据传递

django 前后台传递数据

前台通过form表单向Django后台传输数据,Django处理后返回给前台

Django 2021年最新版教程5前台传递数据到后台处理 GET 方法

Django 2021年最新版教程6前台传递数据到后台处理 POST方法