TEMPLATE的静态变量,当时我们一句话就带过了。TEMPLATE静态变量下面有好几个键值对,把"BACKEND"后面的值改成我们想要用的模板引擎就可以了。我们项目使用Django自己的引擎就行了。
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,第三个参数是我们传递到前端的这个数据,就是我们后台传递到前端的数据。
看一下模板语言也就是DTL的使用方法。
render的第三个参数呢是用来传递数据到前端的。这个参数支持一个字典类型的数据。字典是键值对,字典的键是参数名,就是我们前端到时候获取到的参数名,值就是要传递的数据。HTML文件来使用这个数据。
Django模板也同时支持像if,for循环这种比较简单的逻辑操作。
把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' ]
Django把这两个index.html给搞混乱了。Django在查找Template的时候会按照settings.py中的
INSTALLED_APPS
里添加的顺序来查找Templates。所以不同应用下的Template就是我们的模板HTML文件,如果名字相同,就会造成冲突。改名肯定能解决问题,但是如果有几百个页面怎么办呢,这肯定不是最优解。
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的全路径给省略了。
blogviews.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')
blog2views.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')
blog2index.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>
blogindex.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>
myblogurls.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')), ]
blog2urls.py
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), ]
blogurls.py
from django.conf.urls import url from . import views urlpatterns = [ url(r'^index/$', views.index), ]
myblogsettings.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' ]