-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
Description
理解 Django 的 MTV(Model+Template+View)模式,创建一个 「Hello + 输出用户名」简单的静态页面
开发环境:
- macOS 10.12.6
- python3.5
- Django 1.11.7
安装 Django
如本机安装的 Python 版本为 python3.5 ,所以使用 pip3.5 安装
pip3.5 install django查看 Django 版本
>>> import django
>>> django.VERSION
(1, 11, 7, 'final', 0)一、创建 Django project
- 创建一个文件夹,命名为 root(或其他命名),在终端中 cd 到文件 root 下
- 使用
django-admin命令创建一个项目,命名为 firstsite(或其他命名):django-admin startproject firstsite - 在 root/firstsite/manage.py 中第一行的 python 改为 python3.5(此项目开发环境使用的是 python3.5 ):
#!/usr/bin/env python3.5
二、创建 Django App
每个 Django project 中可以有多个 Django apps,可以想成是类似模组的概念。
- 在 终端中 cd 到文件 root/firstsite 下,输入
python3.5 manage.py startapp firstapp。注:manage.py 是 Django 提供的命令行工具 - 在 root/firstsite/firstsite/settings.py 中找到
INSTALLED_APPS,在末尾添加刚创建的 app 名字(这里是 firstapp )
三、创建数据库
创建数据库后就可以看到 Django 网站的初始界面了。
- 合并数据库:在 终端中 cd 到文件 root/firstsite 下,运行以下 2 行命令合并数据库:1⃣
python3.5 manage.py makemigrations2⃣python3.5 manage.py migrate - 运行服务器(数据库):
python3.5 manage.py runserver。访问 http://127.0.0.1:8000 或 http://localhost:8000 即可看到 Django 网站的初始界面
四、在 Model 中创建数据表
接下来的四、五、六、七步,都是为了创建下面这个网页做调整
-
在 modle 中创建数据表:在 root/firstsite/firstapp/models.py 中定义一个类和相应的数据字段
from django.db import models # 创建数据表:在 models.py 文件中定义一个类和相应的数据字段 class People(models.Model): # models.CharField 为字段的数据类型,以下字段的数据类型为char字符类型 # 3个参数分别代表:数据库中该字段可以为空;表单(验证)中可以不填写;最大长度为200 name = models.CharField(null = True, blank = True, max_length = 200) job = models.CharField(null = True, blank = True, max_length = 200)
-
合并数据库:在 终端中 cd 到文件 root/firstsite 下,运行以下 2 行命令合并数据库:1⃣
python3.5 manage.py makemigrations2⃣python3.5 manage.py migrate。注:每次 model 层有改动都需要输入这 2 行合并数据库。
五、在 View 中获取 Model 中的数据
在 root/firstsite/firstapp/views.py 中创建视图函数,从而获取 model 中的数据:
from firstapp.models import People
def first_try(request):
person = People(name="Fatli", job="programmer")
return六、引入 Template 模板对数据渲染
引入 Template ,用模板把数据渲染在网页中。在 root/firstsite/firstapp/views.py 中继续完善:
from firstapp.models import People
from django.shortcuts import render, HttpResponse
from django.template import Context, Template # 引入 Template 模版对数据渲染
# 在 View 中获取 Model 中的数据:在 views.py 文件中创建视图函数
def first_try(request):
person = People(name = 'Fatli', job = 'programmer')
html_string = '''
<html>
<head>
<meta charset="utf-8">
<title>firstapp</title>
</head>
<body>
Hello, {{ person.name }}
</body>
</html>
'''
t = Template(html_string) # 把html_string的内容转变为字符模板
c = Context({ 'person':person }) # 接收一个字典类型的参数
web_page = t.render(c) # 通过render()方法进行渲染(此时网页依然为字符串格式),储存在一个对象中
# 把渲染后的(字符串)对象变成一个http对象。注:所有的视图函数都是接收一个request对象,返回一个response对象
return HttpResponse(web_page) 七、在 URL 中分配网址
在 root/firstsite/firstsite/urls.py 中分配网址,让链接可以被访问:
from django.conf.urls import url
from django.contrib import admin
from firstapp.views import first_try # 新添加代码
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^first_try/', first_try), # 在 URL 中分配网址
]此时访问 http://127.0.0.1:8000/first_try/ 即可看到一个「Hello + 输出用户名」的简单页面