Django从Jquery Post

时间:2017-11-23 11:10:16

标签: jquery python django

任务:如果有一个单词,它是在运行时动态检查的实现

我过去使用过jquery而且从未遇到过PHP的问题,但我是Django的新手:

此代码在名为home.py的页面中导入,它希望将从文本字段中选取的值发送到名为checkkeyword.py的接收页面。但在达到目标之前,我想看看接收页面是否真的响应了,令人困惑的是我得到的是checkkeyword.py中所写内容的全部内容。

也就是说,我在文本字段中输入一个字符,是的,我在它旁边得到一个回复​​,但是回复是checkkeyword.py中写入的内容的完整内容。的为什么

$( document ).ready(function() {
    $('#keyword').keyup(function() {
        var keyword = $(this).val();
        $('#keyword_status').text('searching ...');
        if(keyword!= ''){
            $.post(
               '/static/js/checkkeyword.py',
               {param: keyword},
               function (data){
                   $('#keyword_status').text(data);
            });
         }
     });


});

如果checkkeyword.py包含" hello",则会返回hello。如果它包含print("hello"),则会返回print("hello")

出于测试目的,正如您所见,我在jQuery文件所在的同一目录中放置了checkkeyword.py

我已经看过一些关于它的帖子,比如写这样的>

from django.views.decorators.csrf import csrf_exempt
@csrf_exempt
def my_view(request):
   print(request)

但是,正如预期的那样,它返回了我所有这四行代码,而不是请求的值。

请:没有关于我的无能或贬低的欺凌评论。我刚刚开始。

谢谢。

1 个答案:

答案 0 :(得分:2)

你必须忘记你学到的东西:-)问题是你假设简单地将Python文件放入静态文件夹会自动意味着内部的Python代码被执行(事实并非如此) - 您只是将内容恢复原状,就好像它是图像,文本文件或静态文件夹中的其他内容一样)

你必须

  1. 将视图代码添加到views.py文件中,可能与settings.py文件位于同一文件夹中。
  2. urls.py文件中注册视图,可能如下。
  3. 代码示例:

    from .views import my_view
    
    urlpatterns = [
        # The following line may already be there:
        url(r'^admin/', include(admin.site.urls)),
    
        # This is the new line you're adding:
        url(r'^my-view/$', my_view),
    ]
    

    然后,尝试POST /my-view/,看看你是否得到任何结果。

    此外,我非常强烈建议您先在https://docs.djangoproject.com/en/1.11/处完成本教程。它有望帮助您理解URL,视图以及请求 - 响应处理如何与Django协同工作之间的关系。

    祝你好运!

    关于CSRF:首先禁用CSRF保护可能对您有用,但请在面向公众的服务器上安装应用程序时学习https://docs.djangoproject.com/en/1.11/ref/csrf/并重新启用CSRF。