目前最流行的Python Web开发框架
目录
Django框架负责处理大部分web开发底层细节,我们可以专注于开发web应用,避免重复造轮子
为什么使用Django
快速开发
- 用python开发
- 数据库ORM系统
大量内置应用
- 后台管理系统 admin
- 用户认证系统 auth
- 会话系统 sessions
安全性高
- 表单验证
- SQL注入
- 跨站点攻击
易于拓展
知识储备
- Python基础
- 数据库SQL
- HTTP协议
- HTML&CSS
- 正则表达式
创建项目
进入命令行: django-admin startproject 项目目录名
使用过开发工具打开项目,项目的目录结构如下
manage.py
- 与项目进行交互的命令行工具集的入口
- 项目管理器
- 执行python manage.py可以查看所有命令
mysite目录
- 项目的一个容器
- 保存项目最基本的一些配置
- 目录名称不建议修改
wsgi.py
- WSGI(Python Web Server Gateway Interface)
- 中文名称: Python服务器网关接口
- Python应用于Web服务器之间的接口
- 在项目开发过程中,一般是不会碰这个文件的
urls.py
- URL配置文件
- Django项目中所有地址(页面)都需要我们自己去配置其URL
Settings.py
- 项目的总配置文件
- 里面包含了数据库、Web应用、时间等各种配置
创建应用
打开命令行,进入项目中(manage.py同级目录)
输入命令:python manage.py startapp 应用名称(英文)
添加应用名到settings.py中的INSTALLED_APP里面
在开发工具中,我们常看到的应用的目录结果如下:
migrations目录
- 数据移植(迁移)模块
- 内容自动生成
admin.py
- 该应用的后台管理系统配置
apps.py
- 该应用的部分配置
- Django-1.9以后自动生成
models.py
- 数据模块
- 使用ORM框架
- 类似MVC结构中的Models(模型)
tests.py
- 自动化测试模块
- Django提供了自动化测试功能
- 在这里编写测试脚本(语句)
views.py
- 执行响应的代码所在模块
- 代码逻辑处理的主要地点
- 项目中大部分代码均在这里编写
如果全部url的配置都放在根(项目)的urls.py中的话,会导致文件代码过多,不便于浏览,于是通常是在应用目录下创建一个urls.py文件,然后在里面进行配置,最后在根(项目)的urls.py下进行include(如下图)
注意事项:
根据urls.py针对APP配置的URL名称,是该APP所有URL的总路径
配置URL时注意正则表达式结尾符号$和/
什么是Templates
- HTML文件
- 使用了Django模板语言(Django Template Language,DTL)
- 可以使用第三方模板(如Jinja2)
- 修改模板引擎,只需要修改项目目录下的settings.py中的TEMPLATES
开发Templates
步骤:
- 在APP的根目录下创建名叫templates的目录
- 在该目录下创建HTML文件
- 在views.py中返回render()
DTL初步使用
- render()函数支持一个dict类型参数
- 该字典是后台传递到模板的参数,键为参数名
- 在模板中使用 {{参数名}} 来直接使用
Django查找Template
- Django按照INSTALLED_APPS中的添加顺序查找templates
- 不同APP下templates目录中的同名.html文件会造成冲突
解决templates冲突方案
- 在APP的templates目录下创建以APP名为名称的目录
- 将html文件放入新创建的目录下
- 注意调整views.py下面绑定的html文件路径
Models介绍
Django中的Models是什么?
- 通常,一个Model对应数据库的一张数据表
- Django中Model以类的形式表现
- 它包含了一些基本字段以及数据的一些行为
ORM:对象关系映射(Object Relation Mapping)
- 实现了对象和数据库之间的映射
- 隐藏了数据访问的细节,不需要编写SQL语句
编写Models
步骤:
- 在应用根目录下创建models.py,并引入models模块 (默认已经创建好了)
- 创建类,继承models.Model,该类即是一张数据表
- 在类中创建字段
- 字段创建
- 字段即类里面的属性(变量)
- attr = models.CharField(max_length=64)
生成数据表
步骤:
- 命令行中进入manage.py同级目录
- 执行python manage.py makemigrations app名(可选)
- 再执行python manage.py migrate
查看:
- Django会自动在app/migrations/目录下生成移植文件(如0001initial.py)
- 执行python manage.py sqlmigrate 应用名 文件id 查看SQL语句(如下图)
默认sqlite3的数据库在项目根目录下db.sqlite3
查看并编辑db.sqlite3:使用第三方软件SQLite Expert Personal (轻量级,完全免费)
下载地址:http://www.sqliteexpert.com/download.html
页面呈现数据
后台步骤
views.py中import models
article = models.Article.objects.get(pk=1)
render(request,page,{'article':article})
前台呈现 {{article.title}}
Admin简介
什么是Admin?
- Admin是Django自带的一个功能强大的自动化数据管理界面
- 被授权的用户可直接在Admin中管理数据库
- Django提供了许多针对Admin的定制功能
配置Admin
创建用户
python manage.py createsuperuser 创建超级用户
localhost:8000/admin Admin入口(如下图)
如果需要修改页面语言,修改项目目录下的settings.py中的内容
配置应用
在应用下admin.py中引入自身models模块(或里面的模型类)
编辑admin.py:admin.site.register(models.Article)
admins.py
from .models import Article
admin.site.register(Article)
使用Admin
修改数据
- 点击Article超链接进入Article列表页面
- 点击任意一条数据,进入编辑页面修改
- 编辑页面下方一排按钮即可执行相应操作
修改数据默认显示名称
步骤:
- 在Article类下添加一个方法
- 根据Python版本选择__str__(self)或__unicode__(self) return self.title
models.py
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=32, default="Title")
content = models.TextField(null=True)
# 3.6版本未起作用
# def __unicode__(self):
# return self.title
def __str__(self):
return self.title
1307

被折叠的 条评论
为什么被折叠?



