Django组织结构符合 Django 的 MTV 法则——
Model(模型):数据库相关的操作
Template(模版):将数据库数据嵌入html页面中
View(视图):逻辑处理
1.模板
分离文档的表现形式和内容
(1)模板
在跟目录添加 templates
添加 templates/index.html
{{ hello }}
说明:
变量使用双括号
(2)配置
修改 settings.py 中,APP_DIRS部分
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR+"/templates",], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
(3)修改view.py
from django.shortcuts import render def index(request): context = {} context['hello'] = 'Hello World!' return render(request, 'index.html', context)
启动服务器,http://localhost:8000/
输出
(4)继承
base.html
"utf-8">this is a test {{ hello }}
My Django
{% block mainbody %}
original
{% endblock %}
index.html
{%extends "base.html" %} {% block mainbody %}继承了 base.html 文件
{% endblock %}
说明:
{% block %} 标签,子模板可以重载这些部分
模板最常用的语法
表达式
{{ variable }} {{ dict.key }} {{ object.attribute }} {{ list.0 }}
条件
{% if is_true %}It is true!
{% else %}It is false!
{% endif %}
循环
{% for elem in some_list %}{{ elem }}
{% endfor %}
2.模型
Django使用 SQLite 作为默认数据库
(1)创建数据库
python manage.py migrate
检查INSTALLED_APPS 设置,为其中的每个应用创建需要的数据表
根据mysite/settings.py 设置文件和每个应用的数据库迁移文件创建
(2)创建模型
from django.db import models class Articles(models.Model): title = models.CharField(max_length=200) content = models.TextField() author = models.CharField(max_length=50) pub_date = models.DateTimeField('date published')
(3)激活模型
修改settings.py,将自定义的应用blog添加到INSTALLED_APPS
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog', ]
生成Migration,执行
python manage.py makemigrations blog
生成表结构, 执行
python manage.py migrate blog
数据库中
总结:
使用数据库迁移,将定义的模型转换成 SQL 代码(即迁移文件),并在数据库中进行建表操作(或更新表)
步骤:
用 Django 定义数据模型
用 makemigrations 命令创建迁移文件,存储在子应用的 migrations 目录下
用 migrate 命令执行迁移