django框架录结构:
- app是自己建立的一个存放app的文件夹,因为项目大了之后会存在很多app
- log自己创建的存放日志文件夹
- media自己创建的存放用户上传的文件
- static自己创建的存放静态文件如CSS和JS
- templates是存放HTML文件
- manage.py是启动django的主要文件
- helloword下的文件
- setting是放置全局配置
- urls是主要的url入口
- wsgi是服务器网关接口
django的url控制器:
(a)urls.py模块
这个模块是配置路由映射的模块,当用户访问一个url地址时,通过这个路由映射模块,映射给对应的逻辑处理函数
- urlpatterns等于一个列表,列表里的一个元素就是一条路由映射
- urlpatterns路由映射配置方式(参数说明):
- 一个正则表达式字符串
- 一个可调用对象,通常为一个视图函数或一个指定视图函数路径的字符串
- 可选的要传递给视图函数的默认参数(字典形式)
- 一个可选的name参数
- urlpatterns = [url(正则表达式,映射函数,参数[可选],别名[可选]),]
(b)views.py模块,路由映射的函数模块,逻辑处理路由映射的需求
自定义映射函数时,有两个重点
HttpResponse(字符串)方法向用户返回字符串
- 定义的函数必须定义一个形式参数,这个形式参数接收的url请求信息对象,可以通过这个形式参数的各种方法获取到各种请求信息
- 向用户返回信息,必须再函数结尾return,如果是要给用户返回一串字符串,那必须返回HttpResponse方法,参数是要返回的字符串,需要导入这个方法
views(视图函数)逻辑处理,最终是围绕着两个对象实现的
http请求:HttpRequest对象
http响应:HttpResponse对象
所在位置:django.http
(c)models.py模块(数据库操作模块)
django默认支持sqlite、mysql、oracle、postgresql数据库(django默认使用sqlite的数据库,默认自带sqlite的数据库驱动)
更换成mysq数据库
MySQLdb(mysql python)
mysqlclient
mysql
pymysql(纯python的mysql驱动程序)
(1)在setting.py配置mysql数据库信息
#MySQL数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #配置数据库引擎名称
'NAME': 'jxiou', #数据库名称
'USER': 'root', #数据库用户名
'PASSWORD': '279819', #数据库密码
'HOST': '127.0.0.1', #数据库链接地址
'PORT': '3306', #数据库端口
}
}
(2)需要找到项目里的全局配置里的__init__.py配置数据库驱动
import pymysql
pymysql.install_as_MySQLdb()
django创建数据库表
在操作数据库表之前,需确认全局配置文件setting.py里的数据库表操作配置里是否配置了应用路径
数据库表的操作都是由django下db模块的models对象来操作的,所以需要导入这个对象
注意:一张表对应一个类
首先要创建一个类来操作一张表,而这个类必须继承models.Model的对象(注意创建表之前,必须要先创建好数据库)
配置好操作表的类后,我们需要生成表,生成表需要先输入makemigrations ,然后输入migrate 来生成表
(d)model.py模板模块(模板语言即是将动态数据在html模板渲染的语言)
(1)接收值渲染
locals()函数,写在请求响应render()函数里,可以将逻辑处理函数里的变量传到html用模板语言渲染{{...}}
(2)接收值,运行代码块
html:
for循环
{% for item in item_list %}
<a>{{ item }}</a>
forloop.counter 计数器,记录循环次数
forloop.first 判断是否是循环第一次,返回布尔值
forloop.last 判断是否是循环最后一次,返回布尔值
{% endfor %}
if判断
{% if ordered_warranty %}
{% else %}
{% endif %}
(3)母版-子版-母版继承
母版继承就是访问的页面继承一个母版,将访问页面的内容引入到母版里指定的地方,组合成一个新页面返回给浏览器,一般母版里都写的一个网页里不变的地方,也就是通用的地方,被继承页(访问页)都是每个页面不同的地方,也就是将页面不用的地方引入到母版组合成的一个新页面返回浏览器
母版里一般都是网页的,头部、底部、头部底部css、头部底部js
被继承页(访问页)里一般都是新内容,新内容的css和js