首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打印输出到网页Django

问打印输出到网页Django
EN

Stack Overflow用户
提问于 2014-03-03 17:19:04
回答 2查看 5.2K关注 0票数 7

我目前有一个长时间运行的脚本,它产生各种输出。我想要做的是让这个脚本运行时,我的网页上的一个按钮,并为输出实时显示在网页上的文本区域。我想知道使用Django实现这个目标的最简单方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-03 21:26:23

你需要的是一个WebSocket!django不直接支持它,但我建议您看看使用Redis实现Django应用程序的Websockets。我以前用过这个,它很容易设置和使用。

例如,创建一个django模板(例如output.html):

代码语言:javascript
复制
<html>
...
<body>
  <textarea id="output" row=3 cols=25></textarea>

  <script>
    var ws = new WebSocket('{{ ws_url }}');
    ws.onmessage = function(e) {
      $('#output').append(e.data); 
    };
  </script>
</body>
</html>

然后,在脚本想要将消息输出到文本区域时,创建脚本调用的方法:

代码语言:javascript
复制
def output_message(session_key, user, message):
    conn = redis.StrictRedis()
    ws_url = '{0}:{1}'.format(session_key, user)
    conn.publish(ws_url, message)

最后,您需要在views.py中指定一个呈现output.html模板的方法:

代码语言:javascript
复制
def output_console(request):
    template_values = {'ws_url':'ws://{SERVER_NAME}:{SERVER_PORT}/ws/{0}?subscribe-session'.format(request.user.id, **request.META)}
    return render(request, 'output.html', template_values)

更深入的代码示例请查看项目git上的聊天服务器。

希望那会有所帮助,祝你好运!

票数 2
EN

Stack Overflow用户

发布于 2014-03-03 18:01:55

如果您讨论的是实时输出,则需要使用AJAX。

要启动脚本,在网页中可以有一个发送AJAX请求的按钮。

代码语言:javascript
复制
function ajax_call_model(data_JSON_Request, object_id){
    $(function jQuery_AJAX_model(){
        $.ajax({
          type: 'GET',
          url: '/ajax_request/',
          data: something,
          datatype: "json",
          success: function(data) {
            $("#output_id").html(data);
          },//success
          error: function() {alert("failed...");}
        });//.ajax
      });//jQuery_AJAX
    };//ajax_call

在视图中,您将看到这样的内容:

代码语言:javascript
复制
def ajax_request(request):
    something = request.GET.get('something', '')# Receives from AJAX
    output = #Does something with the request
    jsonDump = json.dumps(str(output))

    return HttpResponse(jsonDump, content_type='application/json') 
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22153070

复制
相关文章

相似问题

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