Django开发博客-(2)模板的使用

Django模板

在上一章节中我们使用 django.http.HttpResponse() 来输出 “hello blog!”。该方式将数据与视图混合在一起,不符合 Django 的 MVC 思想。
本章节我们将为大家详细介绍 Django 模板的应用,模板是一个文本,用于分离文档的表现形式和内容。
接着上一章,在myblog中创建一个templates目录,随后创建一个myblog.html文件,总体结构目录如下
这里写图片描述
图2 templates增加后的目录

使用模板

在views中返回一个render()用于提交响应数据
修改views
并且为了后续方便,修改函数名为index

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

其中render()函数支持一个dict类型的参数,该字典是后台传递到模板的参数,键为参数名,在模板中使用{{ 参数名 }}来使用

def  index(request):
    return render(request, 'myblog.html',{'hello':'myblog!!!'})

同时在模板文件myblog.html中引用这个参数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>{{ hello }}</h1>
</body>
</html>

运行程序可能有个错误是
Django 找不到模版报错” django.template.exceptions.TemplateDoesNotExist: index.html”
解决办法就是在settings中修改以下代码:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        #os.path.join(BASE_DIR, 'templates')没了这句,
        # 会显示django.template.exceptions.TemplateDoesNotExist: index.html
        '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',
            ],
        },
    },
]

然后运行/blog/可以看到显示字符(注:本系列文章默认连接前都是加上127.0.0.1:8000的):
myblog!!!(这就是后台传递给前端的数据)

使用过程中的问题

假如你当前目录下有两个应用程序,此时并且模板的.html文件名相同此时就会有一些问题
同样按照以上步骤创建一个myblog_test应用,为了区别对待
myblog.views内容修改为:

def  index(request):
    return render(request, 'myblog.html',{'hello':'myblog_test!!!'})

别忘了添加到blog的urls中和settings中添加应用

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/$', include('myblog.urls')),
    url(r'^blog_test/$', include('myblog_test.urls')),
]

此时120.0.0.1:8000/blog_test应该显示myblog_test!!!
但是最终没有显示myblog_test!!!,两者都显示了myblog!!!
这里有两种解决办法,其中之一就是上面settings中修改的路径’Dirs’
第二个就是在templates目录下创建一个目录myblog目录,将myblog.html文件移动到该目录下
此时目录结构如下图
这里写图片描述这里写图片描述
请忽略index.html。。。
随之要跟着修改views文件

def  index(request):
    return render(request, 'myblog/myblog.html',{'hello':'myblog!!!'})

同理myblog_test也要这样修改
然后运行程序可以看到
/blog/显示myblog!!!
/blog_test/显示myblog_test!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值