首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将值从JavaScript传递给Django view.py

将值从JavaScript传递给Django view.py
EN

Stack Overflow用户
提问于 2020-06-24 21:47:13
回答 1查看 56关注 0票数 1

描述:我创建了一个页面。该页正在 上运行。有三种形式。我有一个单独的按钮。当我单击该按钮时,需要在Django view.py中收集所有三个表单值。但我在ajax请求-响应方面遇到了问题。值arry1D不在Django view.py处。

下面的

是单独的按钮。

代码语言:javascript
复制
<form method="post">
  {% csrf_token %}
  <input class="bg-yellow text-white" value="RUN" name="runModel" type="submit" 
   onclick="sendValuesToBack()">
</form>

下面的

是JavaScript方法。

代码语言:javascript
复制
            function sendValuesToBack()
            {
                let j,
                    i,
                    arry1D = [];

                for(j=0;j!=countName;j++)
                {
                    var inputs = document.getElementById("formId" + j).elements;
                    if (!arry1D[j]) arry1D[j] = []
                    arry1D[j][0] = "formId" + j;

                    console.log("---------------Form--------------------");
                    for (i = 0; i < inputs.length; i++) {
                        if (inputs[i].nodeName === "INPUT" && inputs[i].type === "text") {
                            console.log("values of form:", inputs[i].value);
                            arry1D[j][i + 1] = inputs[i].value;
                        }
                    }
                }
                var tk = $(this).attr("data-token")
                $.ajax({
                    url: "/",
                    type:"POST",
                    data:
                        {   'arry1D':arry1D,
                            'csrfmiddlewaretoken': tk},
                    cache:false,
                    dataType: "json",
                    success: function(resp){
                        alert ("resp: "+resp.arry1D);
                    }
                });
            }

来自Django的

view.py ->函数

代码语言:javascript
复制
    if request.method == "POST" and request.is_ajax():
        arry1D = request.POST.get('arry1D')
        return HttpResponse(json.dumps({'arry1D': arry1D}), content_type="application/json")

url.py

代码语言:javascript
复制
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.index,name="index"),
    path('',views.getModelAttribute,name="index"),
]

误差

代码语言:javascript
复制
Internal Server Error: /form-post
Traceback (most recent call last):
  File "C:\Users\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
    response = get_response(request)
  File "C:\Users\\lib\site-packages\django\core\handlers\base.py", line 126, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "C:\Users\lib\site-packages\django\core\handlers\base.py", line 124, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "C:\Users\lib\site-packages\django\views\decorators\csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "C:\Users\views.py", line 39, in getModelAttribute
    return JsonResponse(json.dumps({'arry1D': arry1D}), content_type="application/json")
AttributeError: module 'django.core.serializers.json' has no attribute 'dumps'
[24/Jun/2020 15:34:30] "POST / HTTP/1.1" 200 16236
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-24 22:06:12

您有多条相同名称的路由。相反,将URL更新为类似的内容(假设名为"form_post“的URL是您发送表单数据的地方):

代码语言:javascript
复制
urlpatterns = [
    path('admin/', admin.site.urls),
    path('/',views.index,name="index"),
    path('/form-post/',views.getModelAttribute,name="form_post"),
]

然后,在模板中的javascript中:

代码语言:javascript
复制
                $.ajax({
                    url: "{% url 'form_post' %}",
                    type:"POST",
                    data:
                        {   'arry1D':arry1D,
                            'csrfmiddlewaretoken': tk},
                    cache:false,
                    dataType: "json",
                    success: function(resp){
                        alert ("resp: "+resp.arry1D);
                    }
                });

最后,在发回数据时使用JSONResponse()而不是HttpResponse()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62564580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档