django学习--templates模板

1 自定义urls

每次创建的view和对应的url映射总要配置在项目主目录的urls.py中,如果配置的多了的话
会很麻烦而且不便于维护,所以django支持我们自定义的urls并使用
django.conf.urls.include([views.[方法]])方法导入对应的映射方法

1.1 开始创建自定义的urls.py

在blog目录下创建urls.py文件,按照主目录的urls.py格式创建

# -*- coding:utf-8 -*-
'''
Created on 2017年6月4日
@author: hp
自定义的urls配置文件

'''
# 导入django.conf.urls模块中的函数url,include
from django.conf.urls import url,include
from django.contrib import admin

# 导入视图模块blog.views
import blog.views as bv

# url()中第一个参数后面不要忘记'/'否则会找不到路径
urlpatterns = [
    url(r'^index/$',bv.index)
]

测试

这里写图片描述

2. 开发Template模板

在django中我们通过template模板返回我们指定的视图界面

2.1 创建自定义的template

找到blog目录下,创建template文件夹并创建要返回的html页面
目录结构:
这里写图片描述
index.html:

<html>
    <head>
        <title>Blog</title>
    </head>
    <body>
        <h1>Hello,Blog</h1>
    </body>
</html>

配置views.py

# -*- coding:utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# 导入HttpRequest模块
from django.http import HttpResponse

# Create your views here.
# 在此处创建自己的代码

# 定义一个函数,参数名一般为request
# 使用render()函数返回视图,参数1是request,参数2是templates中的html文件名
def index(request):
    return HttpResponse(render(request,'index.html'))

测试

这里写图片描述

2.2 存在的问题

上个测试的时候我们成功地访问了页面,但是如果出现连个同样名字的index.html,Django会寻找templates文件夹,结果发现有连个一模一样的文件,那么django会按照在settings.pyINSTALLED_APPS中配置的顺序访问对应的html页面

2.3 问题说明

我们之前已经创建过article模块,所以我们在article中创建templates文件夹,在该文件夹中创建index.html文件,然后在views.py中配置返回对应的视图,在urls.py中配置映射的url路径
article模块目录结构:
这里写图片描述
urls.py

# coding:utf-8
'''
Created on 2017年6月4日
@author: hp
'''
from django.conf.urls import url
from django.contrib import admin

import article.views as av

urlpatterns = [url('^index/$',av.index)]

views.py

# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.shortcuts import render

# 导入HttpRequest模块
from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse(render(request,'index.html'))

最后别忘记在主目录的urls.py中添加article的urls文件

# 配置URL映射
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^blog/', include('blog.urls')),
    url(r'^article/', include('article.urls')),
]

测试

这里写图片描述
明明输入的是http://127.0.0.1:8000/article/index/的时候响应的确实blog的index.html页面,这就是上面我们所讲的存在的问题。

解决方式

django为我们建议了解决方式,那就是在对应的templates文件夹中再创建一个对应模块的文件夹,然后把对应的html文件放在里面就好了
目录结构:
这里写图片描述
修改views.py文件中的响应方法添加'article/index.html':

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

这里写图片描述
修改views.py文件中的响应方法添加'blog/index.html':

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

再次测试

这里写图片描述
发现已经恢复正常了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值