python框架django基础指南


Posted in Python onSeptember 08, 2016

Django简介:

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。不过在Django实际使用中,Django更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。Django的主要目的是简便、快速的开发数据库驱动的网站,它强调代码复用,多个组件可以很方便的以“插件”形式服务于整个框架,Django有许多功能强大的第三方插件。

django是对象关系映射的 (ORM,object-relational mapping):以Python类形式定义你的数据模型,ORM将模型与关系数据库连接起来,你可以通过简单的API操作数据库,同时你也可以在Django中使用原始的SQL语句。Django可以运行在Apache上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql, Sqlite3,Oracle。

django安装

pip install Django

验证django的安装

import django
django.get_version()

创建一个django工程

django-admin.py startproject mysite

此时会自动生成一些目录和文件,最外层的manage.py,像是一个运行的入口,通过命令行的调用可以完成一些常用的功能,比如:

运行django的自带的web服务器:

python manage.py runserver http://127.0.0.1:8080

常用的同步或创建数据库表:

python manage.py syncdb

创建django project里面的子项目

python manage.py startapp polls

创建超级管理员:

python manage.py createsuperuser

还有setttings.py文件,是django的配置文件。

urls.py文件,是django用于匹配url的文件,哪个网址执行哪些后台代码(view)是在这里定义的。

Django MTV模式之----modle模型

Django采用了orm模式(对象关系映射),django的模型根据数据库表的内容定义了一个python类,这个类里面的成员和每一个数据库表里的字段一一对应;

类里面的成员类型也和数据库表里的字段类型也是对应的,名字其实也可以起的一样,看起来比较直观。这样每个类实例就代表了数据库里面的一条数据。

模型例子(在models.py里定义):

from django.db import models

class Poll(models.Model):
  question = models.CharField(max_length=200)
  pub_date = models.DateTimeField('date published')

class Choice(models.Model):
  poll = models.ForeignKey(Poll)d
  choice_text = models.CharField(max_length=200)
  votes = models.IntegerField(default=0)

django设置数据库:

settings.py文件里面的database可以定义你要使用的数据库类型,比如:

定义数据库为sqlite

'ENGINE': 'django.db.backends.sqlite3'

定义数据库为mysql

'ENGINE': 'django.db.backends.mysql'

执行django-admin.py startproject mysite, 然后再python manage.py runserver http://127.0.0.1:8080就算搭建了最简单的一个django web服务器,可通过 http://127.0.0.1:8080访问测试。另外在install_apps里面激活应用,执行pyhton manage.py syncdb,此时会根据定义的模型创建相应的数据库。

数据库操作例子:(假设File为定义的模型类)

获取所有数据:

all_filelist = File.objects.all()

获取所有数据并按某个字段排序:

all_filelist = File.objects.all().order_by('-id')

执行sql语句:

cursor = connection。cursor()
cursor.extcute("select * from info_path")
chaannels = cursor.fetchall()

过滤数据:

list=File.objects.all().filter(xxx=xxx)

根据主键查询

list=File.objects.all().get(id=1)

时间过滤:

results = File.objects.all().filter(time__range=(dayfrom, dayto))

创建新数据:

file = File(time=time,path=path,result=result)
file.save()

获取数据:

file.time
file.path
Python 相关文章推荐
python del()函数用法
Mar 24 Python
python的绘图工具matplotlib使用实例
Jul 03 Python
python执行shell获取硬件参数写入mysql的方法
Dec 29 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
Mar 08 Python
解决Python pandas df 写入excel 出现的问题
Jul 04 Python
python实现二维插值的三维显示
Dec 17 Python
django实现模型字段动态choice的操作
Apr 01 Python
python网络编程之五子棋游戏
May 14 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 Python
用 Python 元类的特性实现 ORM 框架
May 19 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 Python
python中星号变量的几种特殊用法
Sep 07 #Python
Python 实现 贪吃蛇大作战 代码分享
Sep 07 #Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 #Python
Python 编码处理-str与Unicode的区别
Sep 06 #Python
Python如何获取系统iops示例代码
Sep 06 #Python
python3编码问题汇总
Sep 06 #Python
用Python实现命令行闹钟脚本实例
Sep 05 #Python
You might like
PHP递归算法的详细示例分析
2013/02/19 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
javascript让setInteval里的函数参数中的this指向特定的对象
2010/01/31 Javascript
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2011/09/13 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
AngularJS 2.0入门权威指南
2016/10/08 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
canvas绘图不清晰的解决方案
2017/02/28 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
Vue ElementUI之Form表单验证遇到的问题
2017/08/21 Javascript
JS求Number类型数组中最大元素方法
2018/04/08 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
JS检索下拉列表框中被选项目的索引号(selectedIndex)
2019/12/17 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
[03:24]DOTA2超级联赛专访hao 大翻盘就是逆袭
2013/05/24 DOTA
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
详解Python3迁移接口变化采坑记
2019/10/11 Python
tensorflow实现二维平面模拟三维数据教程
2020/02/11 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
2017/08/10 HTML / CSS
Senreve官网:美国旧金山的奢侈手袋品牌
2019/03/21 全球购物
学习党章思想汇报
2014/01/07 职场文书
50岁生日感言
2014/01/23 职场文书
高中教师考核方案
2014/05/18 职场文书
525心理活动总结
2014/07/04 职场文书
大学生个人求职信例文
2014/07/07 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
设备技术员岗位职责
2015/04/11 职场文书
八年级作文之友情
2019/11/25 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL
Minikube搭建Kubernetes集群
2022/03/31 Servers
python使用shell脚本创建kafka连接器
2022/04/29 Python