我还没有弄清楚如何用纯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)
但是该网站显示的唯一内容是:
>
在生产中,您将要避免使用Django提供静态资产。 另外,看看docs.djangoproject.com/en/1.8/howto/static-files。 如果您发布的代码是添加动态行为的中间步骤,那就是一件事-但是如果app / index.html确实是静态html页面,那么我认为应该将其用作静态资产。
如果您的文件不是django模板,而是纯html文件,这是最简单的方法:
from django.shortcuts import render_to_response
def index (request):
return render_to_response('app/index.html')
当我这样做时,浏览器仅显示html文件的内容: head> 你好世界
body> html>
您不在那里调用render方法,对吗?
相比:
template.render
template.render()
嗯,是的,谢谢,错过了语法检查...还有其他什么要使用django + html + javascript + css时我需要注意的吗?
阅读static应用程序(内置)和webassets(用于js / css缩小和缓存清除)。
如果您的CSS和JS文件是静态文件,请不要使用Django来提供它们,也不要将它们作为静态文件来使用
对于您的html,如果只是一些固定的文件而没有任何动态内容,则可以执行相同的操作。您还可以将通用视图与TemplateView一起使用,只需在urls.py中添加如下一行:
url(r'^path/to/url', TemplateView.as_view(template_name='index.html')),
这使我能够从django启动页面,但是{{}}模板运算符内的文本没有出现。我在html页面内使用angular js,这与django模板{{运算符。 我通过使用stackoverflow.com/questions/8302928/中的建议解决了这个问题
不要忘记在urls.py中包含from django.views.generic import TemplateView
通过使用HttpResponse,您只能发送数据,如果要html文件,则必须通过以下方式使用render或render_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')
首先,您需要进行一些模板设置:
创建项目后,在根目录中创建"模板"文件夹,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.html和about.html:
urls.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),
]
views.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")
from django.http import HttpResponse
from django.template import loader
def index(request):
template=loader.get_template('app/index.html')
return HttpResponse(template)
您的代码与OPs代码的区别仅在于一个小细节(template.render与template)。 您可能要解释为什么这可以解决OP问题。