34

我还没有弄清楚如何使用纯 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)

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

4

6 回答 6

31

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

from django.shortcuts import render_to_response

def index (request):
    return render_to_response('app/index.html')

2020 年 10 月 13 日更新:

render_to_response在 Django 2.0 中已弃用并在 3.0 中删除,因此当前执行此操作的方法是:

from django.shortcuts import render

def index (request):
    return render(request, 'app/index.html')

于 2013-01-18T13:45:14.337 回答
19

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

比较:

template.render

template.render()
于 2013-01-18T13:40:29.687 回答
15

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

对于您的 html,如果它只是一些没有任何动态内容的固定文件,您也可以这样做。您还可以将通用视图TemplateView一起使用,只需将这样的一行添加到您的urls.py

    url(r'^path/to/url', TemplateView.as_view(template_name='index.html')),
于 2013-01-18T13:50:40.900 回答
13

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

from django.shortcuts import render

def index(request):    
    return render(request, 'app/index.html')

或者

from django.shortcuts import render_to_response

def index (request):
    return render_to_response('app/index.html')
于 2016-11-28T07:58:27.637 回答
2

首先,您需要对模板进行一些设置:

创建项目后,在根 目录中创建“templates”文件夹,manage.py 所在的位置。然后转到settings.py,在 TEMPLATES 部分进入模板文件夹的目录。不建议使用硬编码,因为如果您将项目发送给您的朋友,您的朋友将无法运行它。应该是这样的:

TEMPLATES = [
 {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,"templates")],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

假设您在模板文件夹中有home.htmlabout.html :

网址.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('about/',views.aboutview),
    path('',views.homeview),
]

视图.py

from django.http import HttpResponse
from django.shortcuts import render

def aboutview(request):
  return render(request,"home.html")
def homeview(request):
  return render(request,"about.html")
于 2019-05-25T08:51:48.923 回答
0
from django.http import HttpResponse

from django.template import loader

def index(request):

    template=loader.get_template('app/index.html')

    return HttpResponse(template)
于 2019-04-02T09:21:41.970 回答