开发第一个Template_键值对

TEMPLATE的静态变量,当时我们一句话就带过了。TEMPLATE静态变量下面有好几个键值对,把"BACKEND"后面的值改成我们想要用的模板引擎就可以了。我们项目使用Django自己的引擎就行了。

开发第一个Template_数据_02

 

render就是我们Django在生成blog这个应用的时候自动添加进来的这么一个模块,这么一个函数叫render

 



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

from django.shortcuts import render

# Create your views here.


 

render翻译成中文应该叫渲染,我们应该用这个东西把HTML页面响应给浏览器。render()这个函数有很多个参数。传第三个参数即可,前两个是必须的。request是请求这个对象本身,也就是函数index(request).第二个就是我们的模板文件index.html,第三个参数是我们传递到前端的这个数据,就是我们后台传递到前端的数据。

开发第一个Template_django_03

看一下模板语言也就是DTL的使用方法。

 开发第一个Template_django_04

render的第三个参数呢是用来传递数据到前端的。这个参数支持一个字典类型的数据。字典是键值对,字典的键是参数名,就是我们前端到时候获取到的参数名,值就是要传递的数据。HTML文件来使用这个数据。

Django模板也同时支持像if,for循环这种比较简单的逻辑操作。

开发第一个Template_ico_05

把blog2添加到INSTALLED_APPS里面。



# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog'
]


 开发第一个Template_数据_06

Django把这两个index.html给搞混乱了。Django在查找Template的时候会按照settings.py中的



INSTALLED_APPS


里添加的顺序来查找Templates。所以不同应用下的Template就是我们的模板HTML文件,如果名字相同,就会造成冲突。改名肯定能解决问题,但是如果有几百个页面怎么办呢,这肯定不是最优解。

开发第一个Template_html_07

开发第一个Template_html_08



def index(request):
#return HttpResponse('Hello, world!');
#return render(request,'index.html',{'hello': 'Hello,Blog'})
return render(request, 'blog/index.html')



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


直接把前面Template的全路径给省略了。

开发第一个Template_ico_09

开发第一个Template_ico_10

blog\views.py



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

from django.shortcuts import render

# Create your views here.

#from django.shortcuts import render
from django.http import HttpResponse
def index(request):
#return HttpResponse('Hello, world!');
#return render(request,'index.html',{'hello': 'Hello,Blog'})
return render(request, 'blog/index.html')


blog2\views.py



# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.shortcuts import render

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


blog2\index.html



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--
<h1>Hello,Blog</h1>
-->
<h1>Hello,Blog2!</h1>
</body>
</html>


blog\index.html



<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--
<h1>Hello,Blog</h1>
-->
<h1>Hello,Blog! </h1>
</body>
</html>


myblog\urls.py



"""myblog URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/1.11/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: url(r'^$', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.conf.urls import url, include
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
"""
from django.conf.urls import url,include
from django.contrib import admin



urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')), #函数叫bv.index(),括号去掉
url(r'^blog2/', include('blog2.urls')),
]


blog2\urls.py



from django.conf.urls import url

from . import views

urlpatterns = [
url(r'^index/$', views.index),


]


blog\urls.py



from django.conf.urls import url

from . import views

urlpatterns = [
url(r'^index/$', views.index),


]


myblog\settings.py



# Application definition

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
'blog2'
]