1. Django简介
- Django发布于2005年7月,是当前Python世界里最有名且成熟的网络框架。 最初是被开发用于管理劳伦斯出版集团旗下的以新闻内容为主的网站的,即CMS(内容管理系统)软件。
- Django是一个用Python编写的开放源代码的Web应用框架,代码是开源的。此系统采用了MVC的框架模式, 也可以称为MTV模式。
- 什么是MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
- Model: 即数据存取层。用于封装于应用程序的业务逻辑相关的数据,以及对数据的处理。说白了就是模型对象负责在数据库中存取数据
- View: 即表现层。负责数据的显示和呈现。渲染的html页面给用户,或者返回数据给用户。
- Controller: 即业务逻辑层。负责从用户端收集用户的输入,进行业务逻辑处理,包括向模型中发送数据,进行CRUD操作。
核心思想:解耦
- Django模式简介
MVT模式
- Model: 负责业务与数据库(ORM)的对象
- View: 负责业务逻辑并适当调用Model和Template
- Template: 负责把页面渲染展示给用户
【注】Django中还有一个url分发器,也叫作路由。主要用于将url请求发送给不同的View处理,View在进行相关的业务逻辑处理。
2. VIRTUALENV虚拟环境创建
- Windows中安装virtualenv
pip install virtualenv - 创建虚拟环境
virtualenv --no-site-package venv - 进入/退出env
进入:cd env/Scripts/文件夹 再activate命令
退出:deactivate - pip使用
查看虚拟环境下安装的所有包
pip list
查看虚拟环境中通过pip安装的包
pip freeze
3. 创建Django项目
- 首先创建一个运行Django项目的虚拟环境
安装的库:
pip install Django==1.11
pip install PyMySQL - 创建一个Django项目
django-admin startproject helloWorld
创建一个名为helloWorld的工程 -
项目目录介绍
- manage.py: 是Django用于管理本项目的管理集工具,之后站点运行,数据库自动生成,数据表的修改等都是通过该文件完成。
- init.py: 指明该目录结构是一个python包,暂无内容,在后期会初始化一些工具会使用到。
- seetings.py: Django项目的配置文件,其中定义了本项目的引用组件,项目名,数据库,静态资源,调试模式,域名限制等。
- urls.py:项目的URL路由映射,实现客户端请求url由哪个模块进行响应。
- wsgi.py:定义WSGI接口信息,通常本文件生成后无需改动。
- 运行Django项目
python manage.py runserver 端口
端口可以不用写,启动会默认创建一个可以使用的端口。 - 创建app
创建一个名为hello_app的app
python manage.py startapp hello_app -
setting.py配置文件
a. 设置语言
LANGUAGE_CODE = 'zh-hans' 表示中文 LANGUAGE_CODE = 'en-us' 表示英文
设置时区: TIME_ZONE = 'Asia/Shanghai'
b. 时区解释: (需要详细回顾思考时区问题)
UTC:世界标准时间,也就是平常说的零时区。 北京时间表示东八区时间,即UTC+8
4. 模型使用
使用admin管理后台
1. 准备工作,在model中定义Student的模型
class Students(models.Model):
name = models.CharField(max_length=10)
sex = models.BooleanField()
class Meta:
db_table = 'student'
2. admin管理后台的url
在工程目录下可以看到路由配置中有一个admin的url地址
url(r'^admin/', admin.site.urls),
3. 创建admin后台的用户密码
python manage.py createsuperuser
4. 在登录后的管理后台中对自定义的模型进行CRUD操作
在管理后台中操作模型对象。需要在app的admin.py中写如下代码
admin.site.register(模型名)
4. 继承admin.ModelAdmin,编写自定义的admin
class StudentAdmin(admin.ModelAdmin):
def set_sex(self):
if self.sex:
return '男'
else:
return '女'
set_sex.short_description = '性别'
list_display = ['id', 'name', set_sex]
list_filter = ['sex']
search_fields = ['name']
list_per_page = 1
admin.site.register(模型名, StudentAdmin)
```
其中:<br>
list_display: 显示字段 <br>
list_filter: 过滤字段 <br>
search_fields: 搜索字段 <br>
list_per_page: 分页条数 <br>
```
5. 使用装饰器去实现注册
@admin.register(模型名)
class StudentAdmin(admin.ModelAdmin):
def set_sex(self):
if self.sex:
return '男'
else:
return '女'
set_sex.short_description = '性别'
list_display = ['id', 'name', set_sex]
list_filter = ['sex']
search_fields = ['name']
list_per_page = 1