Thanks to visit codestin.com
Credit goes to github.com

Skip to content

理解 Django 的 MTV 模式:创建一个简单页面 #73

@qingquan-li

Description

@qingquan-li

理解 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

  1. 创建一个文件夹,命名为 root(或其他命名),在终端中 cd 到文件 root 下
  2. 使用 django-admin 命令创建一个项目,命名为 firstsite(或其他命名): django-admin startproject firstsite
  3. 在 root/firstsite/manage.py 中第一行的 python 改为 python3.5(此项目开发环境使用的是 python3.5 ):#!/usr/bin/env python3.5

二、创建 Django App

每个 Django project 中可以有多个 Django apps,可以想成是类似模组的概念。

  1. 在 终端中 cd 到文件 root/firstsite 下,输入 python3.5 manage.py startapp firstapp 。注:manage.py 是 Django 提供的命令行工具
  2. 在 root/firstsite/firstsite/settings.py 中找到 INSTALLED_APPS ,在末尾添加刚创建的 app 名字(这里是 firstapp )

三、创建数据库

创建数据库后就可以看到 Django 网站的初始界面了。

  1. 合并数据库:在 终端中 cd 到文件 root/firstsite 下,运行以下 2 行命令合并数据库:1⃣ python3.5 manage.py makemigrations 2⃣ python3.5 manage.py migrate
  2. 运行服务器(数据库): python3.5 manage.py runserver 。访问 http://127.0.0.1:8000http://localhost:8000 即可看到 Django 网站的初始界面

init_page

四、在 Model 中创建数据表

接下来的四、五、六、七步,都是为了创建下面这个网页做调整

hello_fatli

  1. 在 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)
  2. 合并数据库:在 终端中 cd 到文件 root/firstsite 下,运行以下 2 行命令合并数据库:1⃣ python3.5 manage.py makemigrations 2⃣ 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 + 输出用户名」的简单页面

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions