django调用python脚本返回_关于python:如何在Django中返回静态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)

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

>

在生产中,您将要避免使用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问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值