先用pip install django安装好django开发环境
然后在D盘新建一个"django web"目录
然后进入打开cmd,进入建好的目录里
新建一个django工程,命令如下
D:\django web>django-admin startproject website
然后修改一下settings.py的配置,以下为要修改的几个地方
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/shanghai'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog' #这里填上我们要创建的app的名字
]
接下来在urls.py里添加一项
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/index/$',views.index), //访问blog/index的请求,都转给views.index这个方法处理
]
下面要新建一个名字为blog的app
D:\django web>django-admin startapp blog, 目录结构如下
然后在blog/views里新建测试代码
from django.shortcuts import render
from django.template import loader,Context
from django.http import HttpResponse
class Person(object):
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def say(self):
return "my name is " + self.name
# Create your views here.
def index(request):
t = loader.get_template('blog/index.html') #用loader这个类来加载模版
user = {"name":"tom", "age":23,"sex":"male"}
person = Person("jack",30,"female")
book_list = ["python","ruby","java","c"]
c = Context({'title':'Django', "user": person,"book_list":book_list})
return HttpResponse(t.render(c)) #调用t.render()方法渲染模版
在blog下新建一个templates目录,然后再新建一个blog目录,在这个目录下新建一个名为index.html的模版文件
<!DOCTYPE html>
<html>
<head>
<title>{{title}}</title>
</head>
<body>
<h1>hello,{{user.name}}!</h1>
<li>{{user.age}}</li>
<li>{{user.sex}}</li>
<li>{{user.say}}</li>
<li>{{book_list.0}}</li>
<li>{{book_list.1}}</li>
<li>{{book_list.2}}</li>
<li>{{book_list.3}}</li>
</body>
</html>
然后通过以下命令启动一个django的测试服务器(这个服务器只是用来测试用的不能用于生产环境)
D:\django web>manage.py runserver 0.0.0.0 8000
在浏览器里运行效果如下:
总结一下知识点:
在模版文件里,变量用{{变量名}},并支持各种复杂的数据结构
调用对象的属性和方法,可以直接用 {{变量名.属性}} {{变量名.方法名}}
访问一个列表元素,直接用列表的索引就可以访问了
{{变量名.0}} #第一个列表元素
{{变量名.1}} #第二个列表元素
Django中用 django.template.Context这个对象和模版中的变量关联
book_list = ["python","ruby","java","c"]
c = Context({'title':'Django', "user": person,"book_list":book_list})
return HttpResponse(t.render(c))