Django:在网站上显示txt文件的内容

时间:2018-02-27 19:10:26

标签: python django python-2.7

我在views.py

中有这个
def read_file(request):
    f = open('path/text.txt', 'r')
    file_contents = f.read()
    print (file_contents)
    f.close()
    return render(request, "index.html", context)

Urls.py:

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^impala/$', views.people, name='impala'),
]

我在网站上看不到任何内容(text.txt文件有信息)。 我没有在nohup中看到任何打印输出。 没有错误

2 个答案:

答案 0 :(得分:5)

如果您read_file中的views.py功能将urls.py调整为:

urlpatterns = [
    url(r'^$', views.index, name='index'),
    url(r'^test/$', views.read_file, name='test'),
    url(r'^impala/$', views.people, name='impala'),
]

修复基于功能的视图:

from django.http import HttpResponse

def read_file(request):
    f = open('path/text.txt', 'r')
    file_content = f.read()
    f.close()
    return HttpResponse(file_content, content_type="text/plain")

启动开发服务器并访问localhost:port/test。您应该看到test.txt

的内容

如果您要将文本文件的内容传递给template.html,请将其添加到context变量,并使用{{ file_content }}在模板中访问该文件。

def read_file(request):
    f = open('path/text.txt', 'r')
    file_content = f.read()
    f.close()
    context = {'file_content': file_content}
    return render(request, "index.html", context)

请注意,出于性能原因,nginxapache等网络服务器通常会负责提供静态文件。

答案 1 :(得分:0)

您可以将文件内容作为字符串传递给html模板

def read_file(request):
    f = open('path/text.txt', 'r')
    file_contents = f.read()
    f.close()
    args = {'result' : file_contents }
    return render(request, "index.html", context, args)
#######################index.html


   
<HTML>
 ...
   <BODY>
      <P>{{ result }} </p>
   </BODY>
</HTML>