Django Ajax简单的Get功能

时间:2014-02-16 13:14:05

标签: ajax json django get

首先,抱歉愚蠢的问题,但我没有编码器,所以请原谅我:)

我在Python中编写了简单的代码,它通过串口读取数据。 它的工作真的很棒。

编辑:

在你帮助vadimchin的帮助下,我设法做了类似的事情。

views.py

class ViewVolt(TemplateView):
template_name = 'view_volt.html'

def __init__(self, voltage=''):
    self.voltage = voltage
    rs232 = serial.Serial(
                     port = 'COM15',
                     baudrate = 38400,
                     parity = serial.PARITY_NONE,
                     stopbits = serial.STOPBITS_ONE,
                     bytesize = serial.EIGHTBITS,
                     timeout = 1) 
    line = rs232.readline().decode('utf-8')
    if ( 'Pomiar 1' in line ):
        index_current = line.find('Prąd')
        index_voltage = line.find('Napięcie')
        current = line[index_current+6:index_current+11]
        self.voltage = line[index_voltage+9:index_voltage+14] 

def get_context_data(self, **kwargs):

    context = super(ViewVolt, self).get_context_data(**kwargs)
    context['ajax_var'] = self.voltage
    context['is_ajax'] = self.request.is_ajax()
    return context

我现在要做的是在我的网页上只显示电压值。

urls.py

url(r'^volt/$', ViewVolt.as_view(), name='view_volt'),

view_volt.html

    {% if is_ajax %}
    <h1>from ajax: {{ ajax_var }}</h1>
{% else %}
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
       <script language="javascript" type="text/javascript" src="{{ STATIC_URL }}admin/js/jquery.min.js"></script>
        <script type="text/javascript">

            $(function () {
                var ping_tm = null;

                function _ping() {
                    $.get('', function (result) {
                        clearTimeout(ping_tm);
                        $("div").empty();
                        $("div").append(result);

                        ping_tm = setTimeout(_ping, 1000);
                    })
                }

                _ping();

            });

        </script>
    </head>
    <body>
    <div></div>
    my doc
    </body>
    </html>
{% endif %}

正如您所看到的,我已经修改了一些view_volt.html模板和View_volt类,但它仍然无法正常工作。

这是一个截屏。

![结果1]

我不知道为什么它一直没有从我的串口获得价值。

提前致谢...

1 个答案:

答案 0 :(得分:0)

views.py

logger = logging.getLogger('volt')

class ViewVolt(TemplateView):
    template_name = 'frontend/view_volt.html'

    def get_context_data(self, **kwargs):
        context = super(ViewVolt, self).get_context_data(**kwargs)

        logger.debug('my info')

        context['ajax_var'] = '1234'
        context['is_ajax'] = self.request.is_ajax()
        return context

view_volt.html

{% if is_ajax %}
    <h1>from ajax: {{ ajax_var }}</h1>
{% else %}
    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
        <script type="text/javascript" src="/static/js/jquery-2.1.0.min.js"></script>
        <script type="text/javascript">

            $(function () {
                var ping_tm = null;

                function _ping() {
                    $.get('', function (result) {
                        clearTimeout(ping_tm);

                        console.log(result);

                        ping_tm = setTimeout(_ping, 1000);
                    })
                }

                _ping();

            });

        </script>
    </head>
    <body>
    my doc
    </body>
    </html>
{% endif %}

urls.py

urlpatterns = patterns('',
   url(r'^volt/$', ViewVolt.as_view(), name='view_volt'),
)

你可以使用websocket + gevent

在settings.py中

添加

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'file': {
           'class': 'logging.handlers.RotatingFileHandler',
           'level': 'DEBUG',
           'filename': 'log.log'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
        'volt': {
           'handlers': ['file'],
           'level': 'DEBUG'
        }

    }

}