Django 项目构建和基础知识 | 学习笔记

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 快速学习 Django 项目构建和基础知识

开发者学堂课程【Python Web 框架 Django 快速入门Django  项目构建和基础知识  】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/604/detail/8810


Django  项目构建和基础知识


内容简介:

1、概述

2、Django  版本

3、安装  Django

4、创建  Django  项目

5、数据库配置

6、MySQL  数据库驱动

7、创建应用

8、注册应用

9、模型  Model

10、创建  User  的 Model  类

11、迁移  Migration

12、Django  后台管理

13、路由



一、概述

Django  采用  MVC  架构设计的开源的WEB快速开发框架

优点:

1、能够快速开发,如  Auth、Cache(一般不使用,可以进行一些页面缓存项目,用第三方  Cache 会更好)、模版(做不到前后端分离,获得数据后使用静态JS进行添加)

2、MVC  设计模式

3、实用的管理后台

4、自带  ORM、Template、Form、Auth  核心

5、组件

6、简洁的 URL  设计

7、周边插件丰富

缺点:

1、重,因为东西大而全

2、同步阻塞

所以  Django  的设计目标就是一款大而全,便于企业快速开发项目的框架,因此企业应用较广


二、Django  版本

Django Version               Python Version

1.8                         2.7, 3.2, 3.3, 3.4, 3.5

1.9, 1.10                     2.7, 3.4, 3.5

1.11                        2.7, 3.4, 3.5,3.6

2.0                         3.4, 3.5, 3.6

2.1                         3.5, 3.6, 3.7

(推荐使用1.11之后的版本,1.11之前的版本有一些变化,2.0版本使用少是因为有一部分人依赖插件,而这些插件还没有很好地支持3.0,若是自己写代码,需要对框架很了解,若不了解就需要借用插件)


三、安装Django

Python 使用3.5.3

Django  的下载地址:http:www.djangoproject.com/download/

$ plp install django ==1.11

本次使用  Django1.11版本,请在虚拟环境中安装

在虚拟环境路径中,Lib/site.packages/django/bin  下有一个  django-admin.py一起从它开始

(Django  框架目前已经提供了很好用的创建项目的方式,使用社区版本可以解决很多问题,点一下基本命令即可)

(在安装过程中可能会出现一些问题网络原因、当前windows版本下编译)

安装完以后即可使用$ django-admin:打开  Python  目录,Django  已存在,点击site packages(第三方库),打开  django-admin

在虚拟环境中输入  django-admin,会出现很多命令,只需要记住“start project”,其他的不需要  Django  来进行操作。


四、创建  Django  项目

继续输入“ startproject blog  .”(在已有项目下创建  project, 如果不加.就会有两个  blog  目录,有一个多余的目录),再回去查看就会以  blog10  作为  Django  项目的根目录,项目里面有   manage.py,进入  blog  文件夹,有_init_py( 目前为空,项目包自带)、 settings.py (进行全局配置,重要文件)、urls.py、wsgi.py

打开settings.py,MIDDLEWARE   相当于拦截器

ROOT URLCONF = ‘blog . urls’

TEMPLATES模版

打开   urls.py,出现  url(r'^admin',admin.site.urls)

$ django- admin startproject blog .

F:\CLASSES\TPROJECTS\BLOG10

|—manage.py

|__blog

|—  settings.py

|—  urls.py

|—  wsgi.py

|__  _init_.py

上句命令就在当前项目根目录中创建了  Django  项目的初始文件。

重要文件说明:

•manage.py:本项目管理的命令行工具,应用创建、数据库迁移等都使用它完成

•blog/settings.py:本项目的配置文件,数据库参数等

blog/urls.py:URL  路径映射配置,默认情况下,只配置  /admin  的路由

•blog/wsgi:定义  WSGI  接口信息,一般无需改动


五、数据库配置

使用数据库,需要修改默认的数据库配置,在主项目的  settings.py  下的DATABASES,默认使用的sqlite,修改为mysql

输入DATABASES =

default’: {

‘ENGINE’ : ‘django.db.backends.mysql’,

‘NAME’ : ‘wayne’,

‘PASSWORD’ : ‘wayne’,

‘HOST’ : ‘192.168.142.140’,

‘PORT’ : ‘3306’

}

}

HOST  数据库主机,缺省是空字符串,代表   localhost,如果是‘/’开头表示使用  Unix Socket  连接。

POST  端口

USER  用户名

PASSWORD  密码

NAME  库名

OPTIONS  选项,字典,参考  MySOL  文档

数据库引擎ENGINE

内建的引擎有

‘django.db.backends.postgresql’

‘django.db.backends.mysql’

‘django.db.backends.sqlite3’

‘django.db.backends.oracle’


六、MySQL  数据库驱动

可以查看文档说明

http://docs.djangoproject.com/en/2.0/ref/databases/

Django  支持  MySQL 5.5+

Django  官方推荐使用本地驱动mysqlclient 1.3.7 +(看1.11文档)

输入$ pip install mysqlclient

windows  下安装错误  error:Microsoft Visual C++ 14.0 is required

解决方法:

1、下载  Visual C++ Redistributable Packages 2015、2017  安装,但是即使安装后,确实看到了  V14  库,也不保证安装  mysqlclient  就成功

2、直接安装编译好的wheel文件

mysqlclient-1.3.13-cp35-cp35m-win _amd64. whl  , python 3.5  使用

mysqlclient-1.3.13-cp36-cp36m-win _amd64. whl  , python 3.6  使用

$ pip install mysqlclient-1.3.13-cp34m-win_amd64.whl

https://stackoverflow.com/questions/29846087/microsoft-visual-c-14-0-is-required-unable-to-find-vcvarsall-bat (参考)


七、创建应用

创建用户应用 $ python manage.py startapp user

该应用完成以下功能

•用户注册

•用户登录

•TODO

创建应用后,项目根目录下产生一个 user  目录,有如下文件:

•admin.py  管理站点模型的声明文件

•models.py  模型层 Model  类定义

•views.py  定义  URL  响应函数

•migrantions  包 数据迁移文件生成目录

•apps.py  应用的信息定义文件


八、注册应用

在  settings.py  中,增加  user  应用,目的是为了后台管理  admin  使用,或迁移migrate  使用

INSTALLED_APPS = [

‘django.contrib.admin’ ,

‘django.contrib.auth ’ ,

‘django.contrib.contenttypes’ ,

‘django.contrib.sessions’ ,

‘django.contrib.messages’ ,

‘django.contrib.startfiles’ ,

‘user’ ,

]


九、模型  Model

字段类                                说明

AutoField                   自增的整数字段。如果不指定,django  会为模型类自动增加主键字段TODO

BooleanField                 布尔值字段,True  和  False  对应表单控件Checkboxinput

NullBooleanField        比  BooleanField  多一个 null  值

CharField                   字符串,max_length  设定字符长度对应表单控件  Textinput

TextField                    大文本字段,一般超过4000个字符使用,对应表单控件Textarea

IntegerField                整数字段

BigintegerField           更大整数字段,8字节

DecimalField              使用  Python    的  Decimal  实例表示十进制浮点数。max_digits总位数,decimal_place   小数点后的位数

FloatField                   Python  的  Float  实例表示的浮点数DateField                   使用  Python  的  admin.date  实例表示的日期  

auto_now=False         每次修改对象自动设置为当前时间。

auto_now_add=False  对象第一次创建时自动设置为当前时间。

auto_now_add、auto_now、default  互斥 对应控件为  Textinput,关联了一个js编写的日历控件

TimeField                    使用  Python  的  datetime.time  实例表示的时间,参数同上

DateTimeField            使用  Python  的  datetime.time  实例表示的时间,参数同上

FileField                      一个上传文件的字段

ImageField                 继承了  FileField  的所有属性和方法,但是对上传的文件进行校验,确保是一个有效的图片

字段选项

值                              说明

db_column                 表中字段的名称。如果未指定,则使用属性名

primary_key                是否主键

unique                       是否是唯一键

default               缺省值。这个缺省值不是数据库字段的缺省值,而是新对象产生的时候被填入的缺省值  TODO

null                表的字段是否可为  null 默认为  False

blank             Django表单验证中,是否可以不填写,默认  False

db_index                    字段是否有索引

关系类型字段类

类                                  说明

ForeignKey                 外键,表示一对多

ForeignKey(‘production.Manufacturer’)

自关联ForeignKey(‘self’)

ManyToManyField          表示多对多

OneToOneField              表示一对一,一对多时,自动创建会增加_id后缀。

•从一访问多,使用 对象.小写模型类  _set

•从一访问一,使用 对象.小写模型类

访问  id  对象.属性  _id


十、创建  User  的 Model  类

•基类 models.Model

•表名不指定默认使用  _ 。使用  Meta  类修改表名

from django .db impot models

#Create your models here .

class User (models.Model):

class Meta:

db_table = ‘user’

Id = models.AutoField (primary _key =True)

name = models.CharField (max _length=48,null =False)

email = models.CharField (max _length=64, unique =True,

null =False)

password =models.CharField (max _length=128,null =False)

def __repr__(self):

return ‘’.format (self.id, self.name)

__str__ = __repr__


十一、迁移  Migration

迁移:~0从模型定义生成数据库的表

1、生成迁移文件“”

$ python manage.py makemigration

Migrations for ‘user’:

user \migrations \0001_initial.py

- Create model User

生成如下文件

user

|—migrations

|—  0001_initial.py

|__  _init_.py

TODO ,修改过  Model  类,还需要调用  makemigrations 吗?还是直接 migrate?总之序号会增加

注意:迁移的应用必须在setting.py  的  INSTALLED_APPS  中注册

# 0001_initial.py  文件内容如下

class Migration (migrations.Migration):

initial = True

dependencies = [

]

operations  = [

migrations .CreateModel(

name = ‘User’,

fields =[

(‘id’ ,models.AutoField (primary _key =True, serialize=False)),

‘name’ ,models.CharField (max _length =48)) ,

‘email’ ,models.CharField (max _length =64, unique =True)) ,

‘password’ ,models.CharField (max _length =128)) ,

] ,

options ={

‘db_table’: ‘user’ ,

}

)

]

2、执行迁移生成数据库的表

使用命令  $ python manage.py migrate

执行了迁移,还同时生成了 admin  管理用的表

查看数据库,user  表创建完成,字段设置完全正确


十二、Django   后台管理

1、创建管理员

管理员用户名  admin

密码  adminadmin

具体操作:  

$ python manage.py createsuperuser

Username (leave blank to ‘wayne’):admin

Email address

Password:

Password (again):

Superuser create successfully

2、本地化

settings.py  中设置语言、时区

语言名称可以查看  django\contrib\admin\locale  目录

具体操作:

LANGUAGE _CODE =‘zh-Hans’ # ‘en-us’

USE_TZ = True

TIME _ZONE = ‘Asia\Shanghai’ # ‘UTC’

3、启动  WEB Server

python manage.py runserver

默认启动 8000 端口

将会出现“正常工作了!祝贺你的第一个由Django驱动的页面。”

4、登陆后台管理

后台管理地址 http://127.0.0.1:8000/admin 

5、注册应用模块

在  user 应用的  admin.py  添加

from django.contrib import admin

from .models import User

# Register your models here.

admin.register (User) # 注册

user就可以在后台进行增删改了


十三、路由

编写  WSGI  库框架项目中路由功能就是实现  URL  模式匹配和处理函数之间的映射。对于  Django  也是如此。路由配置要在项目的  urls.py  中配置,也可以多级配置,在每一个应用中,建立一个urls.py文件配置路 由映射

url函数

url(regex、view、kwargs=None),进行模式匹配

regex:正则表达式,与之匹配的URL会执行对应的第二个参数  view

view:视图使用的字典类型的参数

name:用来反向获取  URL

urls.py  内容如下:

from django.conf.urls import url

from django.contrib import admin

from django.http import HttpResponse

def index (request:HttpResponse)

视图函数:请求进来返回响应

return HttpResponse (b ‘welcom to magedu.com’)

urlpatterns = [

url (r ‘^admin/ , admin.site urls) ,

url (r ‘^$’ ,index) ,

url (r ‘^index $’ ,index) ,

]

url (r ‘^index/$’ ,index)

http://127.0.0.1:8000/index/可以访问

http://127.0.0.1:8000/index 可以访问,但会补一个

url (r ‘^index $’ ,index)

http://127.0.0.1:8000/index可以访问

http://127.0.0.1:8000/index/不可以访问

请求信息测试和JSON响应from django.http import HttpRequest, HttpResponse, ]sonResponse

def index (request:HttpRequest):

视图函数:请求进来返回响应

d = {}

d[‘method’] = request.method

d[‘path ’] = request.path

d[‘path _info ’] = request.path _info

d[‘GETparams ’] = request.GET

return JsonResponse (d)

在项目中首页多数使用 HTML  显示,为了加载速度快,一般多使用静态页面。如果首页内容多,还有部分数据需要变化,将变化部分使用  AJAX  技术从后台获取数据。

本次,为了使用模版技术,将首页采用  Django  的模版技术实现

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
29天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
47 3
|
6月前
|
存储 分布式数据库 数据库
Django项目中使用Hbase的方法
Django项目中使用Hbase的方法
|
3月前
|
搜索推荐 算法 前端开发
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
101 4
美食物管理与推荐系统Python+Django网站开发+协同过滤推荐算法应用【计算机课设项目推荐】
|
6天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
1月前
|
安全 数据库 开发工具
Django实战:从零到一构建安全高效的Web应用
Django实战:从零到一构建安全高效的Web应用
48 0
|
1月前
|
数据采集 存储 数据处理
Python爬虫在Django项目中的数据处理与展示实例
Python爬虫在Django项目中的数据处理与展示实例
|
1月前
|
开发框架 人工智能 前端开发
使用Python、Django和Bootstrap构建在线教育平台
使用Python、Django和Bootstrap构建在线教育平台
36 0
|
2月前
|
SQL 安全 数据库
利用Django框架构建高效后端应用
【2月更文挑战第9天】在当今互联网时代,后端开发扮演着至关重要的角色。本文将介绍如何利用Django框架构建高效的后端应用,探讨其优势和应用场景,并深入探讨了Django框架的核心特性和功能。
|
3月前
|
安全 JavaScript 搜索推荐
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅
【实测】记一次用windows11家庭中文版部署django+vue项目的踩坑之旅
|
4月前
|
算法 Docker Python
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
Python【算法中心 03】Docker部署Django搭建的Python应用流程实例(Docker离线安装配置+Django项目Docker部署)
59 0