簡體   English   中英

如何將 output 從 StreamingHttpResponse 打印到 django 中的 html 模板?

[英]How to print the output from StreamingHttpResponse to an html template in django?

我已經使用views.py中的以下代碼將我的子進程命令的output實時打印到html頁面上。 但是我想將此 output 打印到我的 html 模板(results.html)上。 我怎么做?

from django.shortcuts import redirect, render
from django.http import HttpResponse,HttpResponseRedirect,request
import subprocess

# Create your views here.

def home(request):
    return render(request,"home.html")

def about(request):
    return render (request,"About.html")

def contact(request):
    return render (request,"Contact.html")

def process(request):
    ip=request.POST.get('ip')
    with subprocess.Popen(['ping', '-c5',ip], stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) as p:
        for line in p.stdout:
            yield("<html><title>Fetcher Results</title><body><div style='background-color:black;padding:10px'><pre  style='font-size:1.0rem;color:#9bee9b;text-align: center;'><center>"+line+"<center></div></html> ") # process line here
            
    if p.returncode != 0:
        raise subprocess.CalledProcessError(p.returncode, p.args)


def busy(request):
    from django.http import StreamingHttpResponse
    return StreamingHttpResponse(process(request))  

您可以獲取模板並使用get_template [ 1 ] 進行渲染。 然后,您可以使用以下命令生成渲染的模板:

def process(request):
  ip=request.POST.get('ip')
  template = get_template("result.html")
  with subprocess.Popen(['ping', '-c5',ip], stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) as p:
      for line in p.stdout:
          yield(template.render({"line": line})
  if p.returncode != 0:
      raise subprocess.CalledProcessError(p.returncode, p.args)

對於模板result.html

<html>
    <title>Fetcher Results</title>
    <body>
      <div style='background-color:black;padding:10px'>
        <pre  style='font-size:1.0rem;color:#9bee9b;text-align: center;'>       
          <center>{{ line }}</center>
        </pre>
      </div>
    </body>
 </html>

但是,請注意StreamingHttpResponse將連接模板結果,您的結果中將有效地包含幾個完整的<html>...</html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM