本系列主要为Django入门教程,通过简单几步,可以快速入门Django。

系列目录:

  1、[Python] Django框架入门

  2、[Python] Django框架入门2——深入模型

  3、[Python] Django框架入门3——深入视图

  4、[Python] Django框架入门4——深入模板

  5、[Python] Django框架入门5——静态文件、中间件、上传图片和分页

说明:Django框架入门

  当前项目环境:python3.5、django-1.11

  项目名:test1

  应用名:booktest

  命令可简写为:python manager.py xxx => ./manager.py xxx

准备:已经安装python并加入环境变量

  已安装 django

设计框架对比(引用,可自行搜索):

  1、MVC

    MVC框架的核心思想是:解耦

    降低各功能模块之间的耦合性,方便变更,更容易重构代码,最大程度上实现代码的重用

    m表示model,主要用于对数据库的封装

    v表示view,用于向用户展示结果

    c表示controller,是核心,用户处理请求,获取数据,返回结果

  2、MVT

    Django属于MVT框架

    m表示model,负责与数据库交互

    v表示view,是核心,负责接收请求、获取数据、返回结果

    t便是template,负责呈现内容到浏览器

  

  个人觉得两种框架基本大同小异

一、开始

  1、创建项目:test1

     > django-admin startproject test1

  2、进入test1目录创建应用:booktest

     > python manager.py startapp booktest

    创建完成,可以看到项目下booktes目录    

  3、启动服务器,测试

     > python manager.py runserver []

    

    端口号可以指定,默认8000

    打开浏览器访问 : 127.0.0.1:8080

     

二、创建模型:

  打开booktest目录下的 models.py文件,编辑如下 

 from django.db import models
"""
models文件的作用:
1、根据models的定义去生成SQL语句,并创建表
2、创建对象,对对象进行各种操作
图书-英雄的关系为一对多
""" # 图书表
class BookInfo(models.Model):
# 默认自动生成id
# 图书名称
btitle = models.CharField(max_length=20)
# 图书发布时间
bpub_data = models.DateTimeField() def __str__(self):
return self.btitle # 英雄表
class HeroInfo(models.Model):
# 英雄姓名
hname = models.CharField(max_length=10)
# 英雄性别
hgender = models.BooleanField()
# 英雄简介
hcontent = models.CharField(max_length=500)
# 所属图书 : 外键引用对象
hbook = models.ForeignKey(BookInfo)

三、生成数据表

  1、激活模型:编辑settings.py文件,将booktest应用加入到INSTALLED_APPS下,编辑之后如下:

 INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'booktest', # 我们添加的应用
]

    数据库使用默认的sqlite  

  2、生成迁移文件:根据模型类型生成sql语句

     > python manager.py makemigrations

    结果如下所示:

         

  

   3、执行迁移:执行sql语句生成数据表

     > python manager.py migrate

     

四、测试数据库操作:进入django的shell进行测试

  > python manager.py shell

  1、添加记录,并查看

    

       

      

 五、定义视图

  这里为了方便处理,在booktest应用下新建了一个urls.py文件,方便管理

  1、Route配置

    ① 查看setting.py文件如下:

     ROOT_URLCONF = 'test1.urls'

    ② 修改test1/urls.py文件如下:

 from django.conf.urls import url, include
from django.contrib import admin urlpatterns = [
url(r'^admin/', admin.site.urls),
# 使用应用的urls
url(r'^', include('booktest.urls'))
]

    ③ 在booktest目录下新建urls.py文件,编辑如下:  

 from django.conf.urls import url
from . import views urlpatterns = [
# 首页的处理方法
url(r'^$', views.index)
]

  2、修改视图文件 booktest/views.py 

 from django.http import *

 def index(request):
# 打印 字符串
return HttpResponse("Hello Django")

  3、测试视图,结果如下

  

 六、定义模板(这里仅仅对模板进行展示,更多模板操作,可查阅官方文档)

  1、创建templates目录,并添加文件 index.html,编辑 index.html文件:

     

    

  2、 修改settings.py文件,编辑如下:

    'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 修改目录

    

    3、修改视图文件 views.py

 from django.shortcuts import render
from django.http import *
from django.template import RequestContext, loader def index(request):
# # 加载模板 render() 渲染模板
# tmp = loader.get_template('booktest/index.html')
# return HttpResponse(tmp.render())
return render(request, 'booktest/index.html')

 

  4、测试,刷新页面

  

附录一:使用Django提供管理站点,对数据库进行管理

  1、创建管理用户

     > python manager.py createsuperuser

    按照要求输入账号、邮箱、密码

    

  2、打开网页,登录

    浏览器访问地址(根据自己的情况):127.0.0.1:8000/admin

    进入管理站点,默认可以对groups、users进行管理,如下:

    

  3、管理界面本地化(显示为中文、修改时区)

    修改配置文件settings.py 如下:

 # LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans' # TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'

    语言代码与版本有关:1.8之后使用“zh-hans”,之前是“zh-cn”

  

  4、自定义管理界面

      Django提供了admin.ModelAdmin类,来定义模型在Admin界面显示的方式

    需要在django提供的管理站点进行管理model,则需要修改应用下的admin.py文件如下:

 from django.contrib import admin
from .models import * # 如果需要通过/admin进行管理,需要进行注册
admin.site.register(BookInfo)
admin.site.register(HeroInfo)

    如果对页面有更多的要求、显示更多内容,则如下更改admin.py:

 from django.contrib import admin
from .models import * class HeroInfoInline(admin.TabularInline):
"""
关联对象注册
可以继承的父类:
1-层叠显示:admin.TabularInline
2-表格显示:admin.StackedInline
"""
model = HeroInfo
extra = 3 class BookInoAdmin(admin.ModelAdmin):
# 1、列表页属性
# 显示字段:可以点击列头进行排序
list_display = ['id', 'btitle', 'bpub_data']
# 过滤字段:过滤框会出现在右侧
list_filter = ['btitle']
# 搜索字段:搜索框会出现在上侧
search_fields = ['btitle']
# 分页:分页框会出现在下侧
list_per_page = 10 # 2、修改、添加页属性
# 属性分组
fieldsets = [
('base', {'fields': ['btitle']}),
('super', {'fields': ['bpub_data']})
]
# 关联的对象
inlines = [HeroInfoInline] class HeroInfoAdmin(admin.ModelAdmin):
# 显示字段:可以点击列头进行排序
list_display = ['id', 'hname', 'gender', 'hcontent'] # 如果需要通过/admin进行管理,需要进行注册
admin.site.register(BookInfo, BookInoAdmin)
admin.site.register(HeroInfo, HeroInfoAdmin)

    下图为列表页面:对应上图的BookInfoAdmin中以为 list_xxx 开头的字段

    

      下图为修改、新增页面:对属性进行分组,对应上面代码的BookInfoAdmin的 fieldsets字段

    

  5、管理对象的注册

    修改admin.py文件如下:

    

    

  6、布尔值显示

    修改models.py文件如下

    

    修改models.py文件

    

[Python] Django框架入门的更多相关文章

  1. [Python] Django框架入门5——静态文件、中间件、上传图片和分页

    说明: 本文主要描述Django其他的内容,涉及静态文件处理.中间件.上传文件.分页等. 开发环境:win10.Python3.5.Django1.10. 一.静态文件处理 在Django项目的静态文 ...

  2. [Python] Django框架入门2——深入模型

    说明: 本文主要深入了解模型(models.py),涉及ORM简介.模型定义.模型成员.模型查询.自连接等.需要一定基础,可以先走一走基本入门流程. 附录一使用mysql数据库,附录二Django开发 ...

  3. [Python] Django框架入门3——深入视图

    说明: 本文主要深入了解视图(views.py),涉及路由配置.定义视图.Request对象.Response对象.状态保持等. 一.路由配置 1.配置位置(settings.py 的 ROOT_UR ...

  4. [Python] Django框架入门4——深入模板

    说明: 本文主要深入了解模板(templates),主要涉及模板编写步骤.定义模板.模板继承.HTML转义.CSRF等. 一.模板 动态生成HTML.表达外观.实现业务逻辑(view)与显示内容(te ...

  5. 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!

    利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow  + qrcode 模块 核心代码import qrcode qr = ...

  6. Python Django框架笔记(五):模型

    #前言部分来自Django Book (一)    前言 大多数web应用本质上: 1. 每个页面都是将数据库的数据以HTML格式进行展现. 2. 向用户提供修改数据库数据的方法.(例如:注册.发表评 ...

  7. Python Django框架笔记(三):django工作方式简单说明和创建用户界面

    (一)  说明 简单说明下django的工作方式,并举2个例子. (二)  Django工作方式 假定我们有下面这些文件 ,这里在前2篇的基础上增加了 templates目录(存放html文件) 和s ...

  8. Python Django框架笔记(一):安装及创建项目

     #推荐一本书<Python核心编程>(适合有一定基础的),美国人Wesley Chun编写的,京东.淘宝应该都有.我是觉得写的很好,详细.简洁.满满的干货,不像有的书整本看完也没什么用. ...

  9. python django框架(一)

    s4day63内容回顾: 1. 安装 2. 创建用户 + 授权 3. 连接 - 数据库 终端创建数据库(字符编码) - 数据表 终端 ORM pymysql create ...)engine=inn ...

随机推荐

  1. 通过sysbench工具实现MySQL数据库的性能测试

    1.背景 sysbench是一款压力测试工具,可以测试系统的硬件性能,也可以用来对数据库进行基准测试.sysbench 支持的测试有CPU运算性能测试.内存分配及传输速度测试.磁盘IO性能测试.POS ...

  2. Python小故事--------Tkinter的组件描述及解析

    概念 Tkinter: 是Tk图形用户界面工具包标准(ctl)的Python接口,作为一个轻量级的跨平台图形用户界面(GUI)开发工具 frame: 屏幕上的一块矩形区域,多是用来作为容器(conta ...

  3. Jquery第一次考核

    1. 什么是JS JavaScript 缩写.一种计算机脚本语言 JavaScript是一种动态.弱类型.基于原型的语言,通过浏览器可以直接执行 2. JS三大组成部件 ECMAScript DOM ...

  4. 你可能不知道的Docker资源限制

    What is 资源限制? 默认情况下,容器是没有资源限制的,它会尽可能地使用宿主机能够分配给它的资源.Docker提供了一种控制分配多少量的内存.CPU或阻塞I/O给一个容器的方式,即通过在dock ...

  5. c#小灶——输出语句

    前面我我们学习了如何在控制台输出一句话,今天我们学习一下更详细的输出方式. Console.WriteLine();和Console.Write(); 我们来看一下下面几行代码, using Syst ...

  6. 大型系列课程之-七夕告白之旅vbs篇

    也许,世间所有的美好的东西,都是需要仪式感的,遇到了一年一度的七夕节,怎么过这个节日,成了很多心中有爱的人关注的事情,七夕不浪漫,人间不值得,七夕,发源于中国,这个美好的节日,来自动人的神话故事传说牛 ...

  7. 深入理解java内存模型--读书笔记

    深入理解java内存模型 java内存模型的抽象 java线程之间的通信由java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见 从抽象的角度来看,JMM决定了线程和主 ...

  8. 用CSS来定义<p>标签,要求实现以下效果:字体颜色再IE6下为黑色,IE7下为红色,IE8下为绿色,其他浏览器下为黄色。

    <!DOCTYPE html><html><head><meta charset="utf-8"><meta name=&qu ...

  9. 史上最全面的SignalR系列教程-1、认识SignalR

    SignalR 是什么? SignalR 是一个面向 ASP.NET 开发人员的库,可简化将实时 web 功能添加到应用程序的过程. 实时 web 功能是让服务器代码将内容推送到连接的客户端立即可用, ...

  10. tensorflow学习笔记——使用TensorFlow操作MNIST数据(2)

    tensorflow学习笔记——使用TensorFlow操作MNIST数据(1) 一:神经网络知识点整理 1.1,多层:使用多层权重,例如多层全连接方式 以下定义了三个隐藏层的全连接方式的神经网络样例 ...