html模板文件放在哪里,也就是Templates目录放在哪里,通常有两种方式:
1、分开写,在每个APP目录下新建 Templates文件夹,再建一个和此APP同名的文件夹,
用来存放此APP的的所有.html文件
├── blog1
│
│ ├── Templates
│ │ ├── blog1
| | | |——index.html
|
├── blog2
│
│ ├── Templates
│ │ ├── blog2
| | | |——index.html
│
│
├── db.sqlite3
├── manage.py
这是Django默认的方式,意思就是一个应用会自动到本应用目录下的Templates目录搜索html文件,
或者说html文件对本应用的视图函数是透明可见的,不需要再去在settings.py设置TEMPLATE的DIRS
2、在工程的目录下新建Templates
这种方式也比较常见,但是需要在settings.py中指定目录
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',
],
},
},
]
在manage.py同级目录下新建Templates文件夹,再分别新建每个应用同名的文件夹
这样Templates目录下的html文件对任何一个视图函数来说都是透明的
Templates
├── blog1
│ └── index.html
├── base.html (共用模板文件)
└── blog2
└── index.html
模板渲染函数:
1、render()
def index(request):
context = models.user.objects.all()
return render(request, 'mydata/index.html', {'context': context})
2、重定向到另一个方法redirect() 和 HttpResponseRedirect()
def add(request):
username = request.POST['username']
pwd = request.POST['pwd']
models.user.objects.create(username=username, pwd=pwd)
# return HttpResponseRedirect('/mydata/index/')
# redirect('mydata:index')
return HttpResponseRedirect('/mydata/index/')