Templates介绍
什么是Templates
- HTML文件;
- 使用了django模板语言(Django Template Language, DTL);
- 可以使用第三方模板(如Jinja2);
- 使用其他模板的方法:
- 在settings.py下,TEMPLATES=[]中的第一句‘BACKEND’值改为其他模板
步骤
- 在APP的根目录下创建名叫templates的目录;
- 在该目录下创建HTML文件;
- 在views.py中返回render()
render()通常传递三个参数:对象本身, html文件, 后台传递到前端的数据;
刷新页面,如果报错:
TemplateDoesNotExist at /index/blog/
index.html
解决方法:
#settings.py#
TEMPLATES = [{
‘DIRS’: [os.path.join(BASE_DIR, ‘newApp/templates’)],
}
DTL初步使用
- render()函数中支持一个dict类型参数;
- 该字典是后台传递到模板的参数,key为参数名;
- 在模板中使用{{参数名}}来直接使用;
注意事项
django查找template的顺序:
- django按照INSTALLED_APPS中的添加顺序查找templates;
- 不同APP下templates目录中的同名.html文件会造成冲突;
解决templates冲突方案:
- 在APP的templates目录下创建以APP名为名称的目录;
- 将html文件放入新创建的目录下;
Models介绍
django中的models是什么?
- 通常,一个model对应数据库的一张数据表;
- django中models以类的形式表现;
- 它包含了一些基本字段以及数据的一些行为;
ORM
- 对象关系映射(object relation mapping);
- 实现了对象和数据库之间的映射;
- 隐藏了数据访问的细节,不需要编写SQL语句。
步骤
- 在应用根目录下创建models.py,并引入models模块;
- 创建类,集成modelsModel,该类即是一张数据表;
- 在类中创建数据表的字段。
字段创建
字段即类里面的属性(变量);
attr = models.CharField(max_length=64);
class Article(models.Model):
title = models.CharField(max_length=32,default='title')
conten = models.TextField(null=True)
关于各种字段以及各种字段的可选参数可以参照官方文档:
https://docs.djangoproject.com/en/1.10/ref/models/fields
步骤
查看
- django会自动在app/migrations/目录下生成移植文件;
- 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句;
- 默认sqlite3的数据库在项目根目录下db.sqlite3;
生成数据表
- 查看并编辑db.sqlite3
- 使用第三方软件;
- SQLite Expert Peronal;轻量级,完全免费;
- 插入一条数据;
页面呈现数据
后台步骤
views.py中import models
from . import models
def index(request):
article = models.Article.objects.get(pk=1) #获取主键为1的模型对象
render(request, 'index.html', {'article': article})
前端步骤
模板可直接使用对象以及对象的“.”操作;
{{ article.title}}
{{ article.content }}
Admin简介
什么是admin?
- admin是django自带的一个功能强大的自动化数据管理界面;
- 被授权的用户可直接在admin中管理数据库;
- django提供了许多针对admin 的定制功能;
配置admin
创建用户
python manage.py createsuperuser #创建超级用户
Username (leave blank to use 'test'): admin
Email address:admin@admin.com
Password: AnthiLiu99 # django1.9以后不支持创建太过简单的密码
Password(again): AnthiLiu99
localhost:8000/admin/ #Admin入口
将管理界面语言改为简体中文:修改settings.py中 LANGUAGE_CODE = ’ zh_Hans’
配置应用
在应用下admin.py中引入自身的models模块(或里面的模型类);
编辑admin.py:
from .models import Article
admin.site.register(Article) # 把我们的模型类注册进去
现在刷新一下页面就可以看到我们创建的内容。
修改数据
点击Article超链接进入Article列表页面;
点击任意一条数据,进入编辑页面修改;
编辑页面下方一排按钮可执行相应操作。
修改后台数据默认显示名称
步骤
在Article类下添加一个方法;
根据python版本选择的 str(self) 或 _unicode(self);
return self.title
def __str__(self): # python 3.x
return self.title