如何在Django中返回静态HTML文件作为响应?

jju*_*9jj 23 python django static-html

我还没想出如何用纯HTML代码和/或HTML + JavaScript + CSS呈现网站.

我试着加载一个HTML文件,只是说:Hello World.

我知道我也可以用Django做到这一点,但后来我想用CSS + JavaScript + HTML显示我的网站.

在视图文件中,我运行此代码:

# Create your views here.
from django.http import HttpResponse
from django.template import Context, loader

def index(request):
    template = loader.get_template("app/index.html")
    return HttpResponse(template.render)
Run Code Online (Sandbox Code Playgroud)

但网站显示的唯一内容是:

>

Cés*_*pia 18

如果您的文件不是django模板而是普通的html文件,这是最简单的方法:

from django.shortcuts import render_to_response

def index (request):
    return render_to_response('app/index.html')
Run Code Online (Sandbox Code Playgroud)

  • 自 Django 3.0 起,“render_to_response”快捷方式已被删除。根据 /sf/answers/3913800551/ 代码 `return render_to_response('app/index.html')` 可以替换为 `return render(None, 'app/index.html')`。 (2认同)

ust*_*tun 16

你没有在render那里调用这个方法,是吗?

相比:

template.render

template.render()
Run Code Online (Sandbox Code Playgroud)


Fac*_*sco 12

如果您的CSS和JS文件是静态的,请不要使用Django来提供它们,或者将它们作为静态文件提供

对于你的html,你可以做同样的事情,如果它只是一些没有任何动态内容的固定文件.您还可以在TemplateView中使用通用视图,只需在此处添加如下行urls.py:

    url(r'^path/to/url', TemplateView.as_view(template_name='index.html')),
Run Code Online (Sandbox Code Playgroud)


小智 8

通过使用HttpResponse你可以只发送数据,如果你想要html文件,那么你必须使用renderrender_to_response通过以下方式...

from django.shortcuts import render

def index(request):    
    return render(request, 'app/index.html')
Run Code Online (Sandbox Code Playgroud)

要么

from django.shortcuts import render_to_response

def index (request):
    return render_to_response('app/index.html')
Run Code Online (Sandbox Code Playgroud)

  • 如果您能解释一下 `HttpResponse` 和 `render_to_response` 之间的区别,那就太好了 (2认同)