[Python] Django框架入门
说明: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 [8080]
端口号可以指定,默认8000
打开浏览器访问 : 127.0.0.1:8080
二、创建模型:
打开booktest目录下的 models.py文件,编辑如下
1 from django.db import models 2 """ 3 models文件的作用: 4 1、根据models的定义去生成SQL语句,并创建表 5 2、创建对象,对对象进行各种操作 6 图书-英雄的关系为一对多 7 """ 8 9 10 # 图书表 11 class BookInfo(models.Model): 12 # 默认自动生成id 13 # 图书名称 14 btitle = models.CharField(max_length=20) 15 # 图书发布时间 16 bpub_data = models.DateTimeField() 17 18 def __str__(self): 19 return self.btitle 20 21 22 23 # 英雄表 24 class HeroInfo(models.Model): 25 # 英雄姓名 26 hname = models.CharField(max_length=10) 27 # 英雄性别 28 hgender = models.BooleanField() 29 # 英雄简介 30 hcontent = models.CharField(max_length=500) 31 # 所属图书 : 外键引用对象 32 hbook = models.ForeignKey(BookInfo)
三、生成数据表
1、激活模型:编辑settings.py文件,将booktest应用加入到INSTALLED_APPS下,编辑之后如下:
1 INSTALLED_APPS = [ 2 'django.contrib.admin', 3 'django.contrib.auth', 4 'django.contrib.contenttypes', 5 'django.contrib.sessions', 6 'django.contrib.messages', 7 'django.contrib.staticfiles', 8 'booktest', # 我们添加的应用 9 ]
数据库使用默认的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文件如下:
1 from django.conf.urls import url, include 2 from django.contrib import admin 3 4 5 urlpatterns = [ 6 url(r'^admin/', admin.site.urls), 7 # 使用应用的urls 8 url(r'^', include('booktest.urls')) 9 ]
③ 在booktest目录下新建urls.py文件,编辑如下:
1 from django.conf.urls import url 2 from . import views 3 4 urlpatterns = [ 5 # 首页的处理方法 6 url(r'^$', views.index) 7 ]
2、修改视图文件 booktest/views.py
1 from django.http import * 2 3 4 def index(request): 5 # 打印 字符串 6 return HttpResponse("Hello Django")
3、测试视图,结果如下
六、定义模板(这里仅仅对模板进行展示,更多模板操作,可查阅官方文档)
1、创建templates目录,并添加文件 index.html,编辑 index.html文件:
2、 修改settings.py文件,编辑如下:
'DIRS': [os.path.join(BASE_DIR, 'templates')], # 修改目录
3、修改视图文件 views.py
1 from django.shortcuts import render 2 from django.http import * 3 from django.template import RequestContext, loader 4 5 6 def index(request): 7 # # 加载模板 render() 渲染模板 8 # tmp = loader.get_template('booktest/index.html') 9 # return HttpResponse(tmp.render()) 10 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 如下:
1 # LANGUAGE_CODE = 'en-us' 2 LANGUAGE_CODE = 'zh-hans' 3 4 # TIME_ZONE = 'UTC' 5 TIME_ZONE = 'Asia/Shanghai'
语言代码与版本有关:1.8之后使用“zh-hans”,之前是“zh-cn”
4、自定义管理界面
Django提供了admin.ModelAdmin类,来定义模型在Admin界面显示的方式
需要在django提供的管理站点进行管理model,则需要修改应用下的admin.py文件如下:
1 from django.contrib import admin 2 from .models import * 3 4 5 # 如果需要通过/admin进行管理,需要进行注册 6 admin.site.register(BookInfo) 7 admin.site.register(HeroInfo)
如果对页面有更多的要求、显示更多内容,则如下更改admin.py:
1 from django.contrib import admin 2 from .models import * 3 4 5 class HeroInfoInline(admin.TabularInline): 6 """ 7 关联对象注册 8 可以继承的父类: 9 1-层叠显示:admin.TabularInline 10 2-表格显示:admin.StackedInline 11 """ 12 model = HeroInfo 13 extra = 3 14 15 16 class BookInoAdmin(admin.ModelAdmin): 17 # 1、列表页属性 18 # 显示字段:可以点击列头进行排序 19 list_display = ['id', 'btitle', 'bpub_data'] 20 # 过滤字段:过滤框会出现在右侧 21 list_filter = ['btitle'] 22 # 搜索字段:搜索框会出现在上侧 23 search_fields = ['btitle'] 24 # 分页:分页框会出现在下侧 25 list_per_page = 10 26 27 # 2、修改、添加页属性 28 # 属性分组 29 fieldsets = [ 30 ('base', {'fields': ['btitle']}), 31 ('super', {'fields': ['bpub_data']}) 32 ] 33 # 关联的对象 34 inlines = [HeroInfoInline] 35 36 37 class HeroInfoAdmin(admin.ModelAdmin): 38 # 显示字段:可以点击列头进行排序 39 list_display = ['id', 'hname', 'gender', 'hcontent'] 40 41 42 # 如果需要通过/admin进行管理,需要进行注册 43 admin.site.register(BookInfo, BookInoAdmin) 44 admin.site.register(HeroInfo, HeroInfoAdmin)
下图为列表页面:对应上图的BookInfoAdmin中以为 list_xxx 开头的字段
下图为修改、新增页面:对属性进行分组,对应上面代码的BookInfoAdmin的 fieldsets字段
5、管理对象的注册
修改admin.py文件如下:
6、布尔值显示
修改models.py文件如下
修改models.py文件
转载于:https://www.cnblogs.com/reader/p/9436243.html
[Python] Django框架入门相关推荐
- Python Django框架入门第一课
Python Django框架入门 1.Django简介 Django使用python开发的一个免费的Web框架,几乎囊括了Web应用的方方面面,用于快速搭建高性能.优雅的网站. 2.配Django运 ...
- python框架django教程_[Python] Django框架入门3——深入视图
说明: 本文主要深入了解视图(views.py),涉及路由配置.定义视图.Request对象.Response对象.状态保持等. 一.路由配置 1.配置位置(settings.py 的 ROOT_UR ...
- python web 框架例子_最快的 Python Web 框架入门
原标题:最快的 Python Web 框架入门 来源:Python开发 ID:PythonPush 速度比较 框架 实现基础 每秒请求数 平均时间 Sanic Python 3.5 + uvloop ...
- python网站设计理念_简单介绍下python Django框架的历史,设计理念及优势_Django讲解2...
简单介绍下python Django框架的历史,设计理念及优势 Django是一个高层次的 Python Web 框架,它是一个鼓励快速开发和干净,实用的框架设计.Django可以更容易地快速构建更好 ...
- liunx+python+django框架实现图片生成二维码
点击箭头处"蓝色字",免费领测试技术及面试资料! 余生皆欢喜 liunx+python+django框架实现二维码生成器 首先我简单的介绍下django:django官网解释就是如 ...
- 基于Python Django框架后端的微信小程序开发
刚做完一个股票信息服务类的微信小程序(小程序名字"博股论基",大家有兴趣可以搜一下),也有一些心得,在这里记录一下开发过程,算是个开发笔记,同时也希望能给需要的同学一些帮助. -- ...
- 利用 Python django 框架 输入汉字,数字,字符,等。。转成二维码!
利用 Python django 框架 输入汉字,数字,字符,等..转成二维码! 模块必备:Python环境 + pillow + qrcode 模块 核心代码import qrcodeqr = q ...
- Python+Django框架Web应用开发-欧阳桫-专题视频课程
Python+Django框架Web应用开发-237人已学习 课程介绍 系统介绍使用Django框架开发Web应用程序,当然,依然水煮风格 课程收益 掌握Django框架的使用 ...
- Django 框架入门篇(安装与创建项目)
什么是Django框架? 官方定义:Django是一个高级Python Web框架,鼓励快速开发和简洁实用的设计.它由经验丰富的开发人员构建,可以解决大部分Web开发的麻烦,因此您可以专注于编写应用程 ...
最新文章
- TIOBE 2月编程语言排行榜:Python逼近C,Groovy重回TOP 20
- Springmvc的静态资源映射配置
- Redis与其他缓存框架的对比
- Asp.net在线压缩和解压缩简单实现(附项目源码)
- powershell如何编程C语言,如何用C语言执行powershell命令
- 0406复利计算5.0--结对
- ubuntu 13.04 telnet 详细配置
- 2018 蓝桥杯省赛 A 组模拟赛(一)数列求值+推导
- 区块链中的密码学,使用ABE结合区块链
- 内核中dump_stack的实现原理(3) —— 内核函数printk的实现
- 这可能是最详细的Python文件操作
- android+动画完成后不可点击,动画后,TranslateAnimated ImageView无法点击[Android]
- 手机屏大字滚动_LG 滑动伸缩手机专利公布
- Windows Server 2012 将资源发布到 AD DS
- 能写个简单的oa系统java_基于jsp的轻量级OA系统-JavaEE实现轻量级OA系统 - java项目源码...
- STM32跑马灯实验蜂鸣器实验按键输入实验NVIC中断优先级管理
- 我从Python新手到大师的百天之路(内附学习资源)
- 计算机无法启动printspooler,打印服务PrintSpooler无法启动解决方法
- 苹果手机更改照片大小kb_iPhone调整照片大小方法教程 无需第三方软件
- 计算机右键管理没有管理员权限,win7系统右键菜单没有“以管理员身份运行”选项如何恢复...
热门文章
- Microbit-高温报警系统
- SQL语句查询出的数据进行字符串拼接,oracle批量删除数据库用户实例演示
- BAT批处理文件无法运行提示“/E /I /Y ‘XCOPY‘ 不是内部或外部命令,也不是可运行的程序或批处理文件”解决方法
- Python 技术篇-百度语音识别API接口调用演示
- CTFshow 命令执行 web49
- 【Pytorch学习】用pytorch搭建第一个神经网络
- C语言成绩abc,C语言常用经典代码:求三角形的面积、把百分制成绩转换为ABC等级制、其两个自然数的最大公约数和最小公倍数...
- pve远程连接 spcie_proxmox折腾 篇一:解决j3455直通iommu分组问题,PVE内核编译教程...
- c++对那些类型的数据不能使用引用_基于js数据类型浅谈deepClone
- vue项目中使用element的dialog中引入ztree却不能初始化解决办法