. 模板语言(字符串替换)
. 母版和继承
. 什么时候用母版?
html页面有重复的代码,把它们提取出来放到一个单独的html文件。
(比如:导航条和左侧菜单)
. 子页面如何使用母版?
{% extends 'base.html' %} --> 必须要放在子页面的第一行 母版里面定义block(块),子页面使用block(块)去替换母版中同名的块
. 组件
. 什么时候用组件?
重复的代码,包装成一个独立的小html文件。
. 如何使用?
{% include 'nav.html' %} . Django模板语言中关于静态文件路径的灵活写法
. 利用Django模板语言内置的static方法帮我拼接静态文件的路径
{% load static %}
<link href="{% static 'bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
. 利用内置的get_static_prefix获取静态文件路径的别名,我们自行拼接路径
{% load static %}
<link href="{% get_static_prefix %}bootstrap/css/bootstrap.min.css" rel=stylesheet>
. as语法(一个路径多次用到,可以使用as保存到一个变量,后面就直接使用变量代替具体路径)
. 自定义的simple_tag
比filter高级一点点
它可以接受的参数个数大于2 . 自定义的inclusion_tag
用来返回一段html代码(示例:返回ul标签) . 定义阶段
在app下面新建templatetags 文件夹(注意是Python包)
新建一个py文件 from django import template
# 生成注册示例,名字必须是register
register = template.Library()
@register.inclusion_tag("ul.html")
def show_ul(num):
num = if num < else int(num)
data = ["第{:0>3}号技师".format(i) for i in range(, num+)]
return {"data": data} . 调用阶段
{% load xx %}
{% show_ul %} . 今日内容
. 视图(接收请求返回响应那部分)
. CBV(class base view)和FBV(function base view) . request对象
. 之前学过的
. request.method --> 获取请求的方法(GET、POST等)
. request.GET --> 通常用来获取URL里面的参数
127.0.0.1:/edit_book/?id=&name=yimi
request.GET --> {"id":, "name":"yimi"}
request.GET.get("id")
. request.POST --> 用来获取POST提交过来的数据
request.POST.get("book_name")
. 补充其他常用的:
. request.path_info --> 获取用户请求的路径(不包含IP和端口和URL参数)
. request.body . response
基础必备三件套(求学要严谨)
. HttpResponse --> 返回字符串内容
. render --> 返回一个html页面
. redirect --> 返回一个重定向(告诉浏览器再去访问另外的网址) . JsonResponse . 路由系统(urls.py) http://www.cnblogs.com/liwenzhou/p/8271147.html
. 正则表达式的模糊匹配
. 分组匹配 --> 相当于给视图函数传递位置参数
. 分组命名匹配 --> 相当于给视图函数传递关键字参数
(两个不要混合使用) . 反向解析URL
本质上就是给url匹配模式起别名,然后用过别名拿到具体的URL路径 . 怎么起别名?
在url匹配模式中,定义name="别名"
. 如何使用?
. 在模板语言里面使用:
{% url "别名" %} --> 得到具体的URL路径
. 在视图中如何使用:
from django.urls import reverse reverse("别名") --> 得到具体的URL路径
. 如何传参数?
. 模板语言中:
{% url "别名" "nb" %}
. 视图函数中
传位置参数:
reverse("别名", args=(, "nb")) 传关键字参数:
reverse("别名" kwargs={"year": , "title": "nb"})
. namespace
为了防止不同的app下面的url匹配模式有重复的别名
. 内容回顾
. ORM已经的学过的内容:
. Django项目如何使用ORM连接MySQL
. 手动创建数据库
. 在settings.py里面配置一下数据库的连接信息(告诉Django连接哪一个数据库)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 连接数据库的类型
'NAME': 'day62xiawu', # 数据库名字
'HOST': '127.0.0.1', # IP
'PORT': , # 端口
'USER': 'root', # 用户名
'PASSWORD': '', # 密码
}
}
. 在和settings.py同目录下的__init__.py文件中,告诉Django用pymysql代替MySQLdb来连接数据库
import pymysql
pymysql.install_as_MySQLdb()
. 在app/models.py中,定义类,类一定要继承models.Model
class Book(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=)
. 执行两条命令
. 在哪儿执行?
在项目的根目录(有manage.py文件的那个目录)
. 命令
python manage.py makemigrations --> 将models.py文件中的改动记录在小本本(app/migrations/00xx_****.py)上 python manage.py migrate --> 将改动翻译成SQL语句,去数据库中执行
. 表和表之间的关系
. 一对多(出版社和书)
publisher = models.ForeignKey(to="Publisher") 在数据库中:
有没有publisher这个字段?
数据库中实际 生成的是一个 publisher_id 字段 . 多对多(作者和书)
books = models.ManyToManyField(to="Book") 在数据库中:
是通过第三张表建立的关系 . 增删改查操作
. 单表增删改查
增:
models.Publisher.objects.create(name="沙河出版社")
查:
models.Publisher.objects.get(id=)
models.Publisher.objects.get(name="沙河出版社")
删:
models.Publisher.objects.get(id=).delete()
改:
obj = models.Publisher.objects.get(id=)
obj.name = "沙河第二出版社"
obj.save()
. 外键的增删改查
增、删、查同上 book_obj = models.Book.objects.get(id=) book_obj.publisher 是什么? *****
和我这本书关联的出版社对象 book_obj.publisher.id 和我这本书关联的出版社的id值
book_obj.publisher.name 和我这本书关联的出版社的名称 book_obj.publisher_id 是什么?
和我这本书关联的出版社的id值 . 多对多操作 . 查id为1的作者都写过的书?
author_obj = models.Author.objects.get(id=)
author_obj.books.all() --> 和我这个作者关联的所有书对象
. 想给作者绑定多本书?
author_obj = models.Author.objects.get(id=)
author_obj.books.set([,,]) --> 把id是1、、3的书和我这个作者关联上 . 今日内容 . Django ORM常用字段:
. AutoField --> 自增
. CharField --> varchar(xx)
. ForeignKey --> 外键
. ManyToManyField --> 多对多关联 . DateField
. DateTimeField . IntegerField . 自定义char字段
class FixedCharField(models.Field):
"""
自定义的char类型的字段类
"""
def __init__(self, max_length, *args, **kwargs):
self.max_length = max_length
super(FixedCharField, self).__init__(max_length=max_length, *args, **kwargs) def db_type(self, connection):
"""
限定生成数据库表的字段类型为char,长度为max_length指定的值
"""
return 'char(%s)' % self.max_length . 常用的字段参数
. null
. default
. unique
. db_index . DateField和DateTimeField才有的参数:
auto_now_add=True --> 创建数据的时候自动把当前时间赋值
auto_add=True --> 每次更新数据的时候更新当前时间 上述两个不能同时设置!!! . class Meta:
db_table = "表名"

Django 模板语言 路由 视图的更多相关文章

  1. Django模板语言与视图(view)

    常用语法 {{  }}和{% %} 变量相关的用{{}} , 逻辑相关的用{% %} 变量 在Django的模板语言中按此语法使用:{{ 变量名 }}. 当模版引擎遇到一个变量,它将计算这个变量,然后 ...

  2. [Python自学] Flask框架 (1) (Flask介绍、配置、Session、路由、请求和响应、Jinjia2模板语言、视图装饰器)

    oldboy:s9day114 参考博客:https://www.cnblogs.com/wupeiqi/articles/7552008.html 一.Flask简介 1.安装Flask pip i ...

  3. Django模板语言初识

    一.Django框架简介 1.MVC框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控 ...

  4. Django模板语言,标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  5. Django模板语言 标签整理

    Django模板语言 标签 内置标签引用 1. autoescape 控制自动转义是否可用. 这种标签带有任何 on 或 off 作为参数的话,他将决定转义块内效果. 该标签会以一个endautoes ...

  6. django框架基础-django模板语言-长期维护

    ##################     常用的模板语言       ####################### # django的模板语言, # # 只需要记两种特殊符号: # # {{ } ...

  7. Django模板语言的复用

    一.include标签 由于在项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的,基于这个问题,我们可以采用模板语言复用include标签来帮我们解决,这样就避免 ...

  8. Django模板语言相关内容 Djan

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

  9. Django——模板语言相关内容

    Django模板语言相关内容   Django模板系统 官方文档 常用语法 只需要记两种特殊符号: {{  }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 变量 {{ 变量名 }} ...

随机推荐

  1. C++ 简单实现MFC ListControl 点击列头排序

    说明: SetItemData可以为每一行绑定一个DWORD类型的变量.用GetItemData可以获得这个变量.举个例子,假设CListCtrl中你需要显示某个数据表中的记录,该表有个流水号主键ID ...

  2. HttpWatch手把手图解教程

    HttpWatch手把手图解教程,提供HttpWatch下载,教您安装使用,一步到位 一 HttpWatch下载: HttpWatchProv7.2.13 破解版(带正版key) 授权:共享软件 大小 ...

  3. android有关生命周期探讨

    android生命周期直接贴一个经典图: 1.activity生命周期三段式,(开三步,跑,关三步,这三步都是回掉函数哦) 开 onCreate->onStart->onResume 跑 ...

  4. 什么是 BULK INSERT

    MSDN的解释: 在 SQL Server 中以用户指定的格式将数据文件导入到数据库表或视图中. 语法: BULK INSERT [ database_name . [ schema_name ] . ...

  5. .gitignore设置

    git提交的时候一直提示 e/.idea/workspace.xml文件冲突, 这个文件是IDE编辑的时候自动带的文件,这个文件在提交的时候是不需要上传到git中的 这个时候我们需要这种.gitign ...

  6. SPSS-回归分析

    回归分析(一元线性回归分析.多元线性回归分析.非线性回归分析.曲线估计.时间序列的曲线估计.含虚拟自变量的回归分析以及逻辑回归分析) 回归分析中,一般首先绘制自变量和因变量间的散点图,然后通过数据在散 ...

  7. ok6410下的uboot分析与实现

    uboot 由两阶段代码组成: •第一阶段主要步骤: 1.将cpu设置为svc模式 2.关闭mmu 3.设置外设端口地址 4.关闭watchdog 5.关闭中断 6.初始化时钟 7.初始化内存DRAM ...

  8. Dubbo后台管理和监控中心部署

    通过dubbo监控中心和后台管理可以很好的监控dubbo服务,监控服务端服务和客户端调用情况,调用次数,调用日志,方便问题查找.下面我们看看dubbo的管理后台和监控中心怎么部署. 1.软件下载 部署 ...

  9. js 中的正则表达式RegExp

    1.RegExp对象 1.1 RegExp对象实例的创建 正则表达式模式:     g:表示全局模式,即模式将被用于整个字符串,而非发现第一个匹配项时立即停止:     i:表示不区分大小写,忽略大小 ...

  10. Java 管道PipedInputStream PipedOutStream PipedReader PipedWriter

    java中的管道流(pipeStream)是一种特殊的流,用于在不同线程间直接传送数据.一个线程发送数据到输出管道,另外一个线程从输入管道中读取数据.通过使用管道,实现不同线程间的通信,而不必借助类似 ...