如何使用python在模板中用new值替换旧值?

时间:2017-02-18 11:12:27

标签: jquery python html ajax django

我需要将旧值更改为模板文件中的新值。

实际上,当用户输入10位数时,手机号码python函数会调用。如果我检查日志它显示的值,但在html文件中它没有显示值。如何在views.py中第二次调用函数获取该值?

  

views.py

from django.views.decorators.csrf import csrf_exempt
import json
@csrf_exempt
def default(request):
    if request.is_ajax():
        print("inside the ajax")
        phone_no = request.POST.get('phone_no')
        print(phone_no)
        dict = {'phone_no': phone_no}
        template_name = 'mobile_recharge.html'
        extended_template = 'base.html'
        dummy_var = 'test'
        print(dummy_var)
        if request.user.is_authenticated():
            extended_template = 'base_login.html'
        return render(request,template_name, {'extended_template': extended_template,'phone_no': phone_no,'dummy_var': dummy_var})
template_name = 'mobile_recharge.html'
extended_template = 'base.html'
dummy_var = 'test'
if request.user.is_authenticated():
    extended_template = 'base_login.html'
return render(
    request, template_name,
    {'extended_template': extended_template,'dummy_var': dummy_var}
)
  

脚本

<script type="text/javascript">
$(document).ready(function () {
    $('#phone_number').on('input', function () {
        if ($(this).val().length >= 10) {
            alert("user enter 10 digits numbers");
            var phone_no = $('#phone_number').val()
            console.log(phone_no);
            $.ajax({
              type: "POST",
              url: "http://localhost:8090/",
              data: {'phone_no' : phone_no},
              dataType: "json",
              success: function(msg)
              {
                   //alert(msg.phone_no);
              }
           });
            return;
        }
     });
    });
</script>

HTML

{{phone_no}} {{ dict }} {{dummy_var}}

如果我在模板中调用上面的变量。我没有得到任何结果。如何获得结果?

2 个答案:

答案 0 :(得分:0)

试试这个:

from django.views.decorators.csrf import csrf_exempt
from django.http import HttpResponseForbidden
import json
@csrf_exempt
def default(request):
    if request.is_ajax() and request.user.is_authenticated() and 'phone_no' in request.POST:
        phone_no = request.POST['phone_no']
        dummy_var = 'test'
        dict = {'phone_no': phone_no}

        context = {'phone_no': phone_no, 'dict': dict, 'dummy_var ': dummy_var}
        return render(request, 'mobile_recharge.html', context)
    else:
        HttpResponseForbidden()

如果您确实需要打印变量,请改用日志记录。

答案 1 :(得分:0)

您可以在official tutorial中看到如何将变量添加到django模板上下文中。您可以轻松地使用Django Debug Toolbar调试此上下文。

您可能希望使用login_required decorator并依靠django身份验证系统来设置登录模板。另一个建议:不要使用print进行调试,您可以使用logging modulesnippet进行快速查找。

注意:您的问题有一个令人困惑的代码,我认为您粘贴了一些部分