号称最为简明实用的Django上手教程
1 几个基本概念
前置条件:假设读者基本Python语言基础,或者具备某种编程语言的基础。你还熟悉web开发环境,懂些css,js,db等。
Django是什么?
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 Django的主要目标是使得开发复杂的、数据库驱动的网站变得简单。Django注重组件的重用性和“可插拔性”,敏捷开发和DRY法则(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置文件和数据模型。
-----维基百科
Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。
----百度百科
MTV开发模式?
Django是一个基于MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
(1) 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
(2) 视图(View),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
(3) 模板(Template),即业务逻辑层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。
Django的架构?
让我们一览 Django 全貌:
urls.py 网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
views.py 处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
models.py 与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
forms.py 表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
templates 文件夹 views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
admin.py 后台,可以用很少量的代码就拥有一个强大的后台。
settings.py Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。
上面的py文件不理解也没有关系,后面会详细介绍。一图胜千言,架构全貌工作机制如下所示:
Django大家都在使用的商业网站
Sohu 邮箱 、果壳网 、 豆瓣 、 爱调研 、 易度在线云办公 、 优容网 、 快玩游戏、九九房、贷帮网 、 趣奇网 、知乎、时尚时空 、游嘻板: YxPad webpy、DNSPod 国际版 、下厨房 、 贝太厨房 、 Wopus问答 、 咕咚网 、扇贝网 、站长工具、易度文档管理系统、个人租房、 在线文档查看-易度云查看 、 FIFA310 足球数据分析专家、 搜狐随身看等等。
2 Django配置准备
前置条件:pip、python、sublime、anaconda环境已经安装。
后置条件:
1
|
pip install django
|
检查是否安装成功:
xxx数据统计分析(决策)平台
系统环境:WIN10 64bit
开发环境:sublime+Anaconda
数据库:Mysql 5.6.17
语言:python3.5
框架:django1.11+Bootstrap
可视化工具:Highchart|Echarts|plotly|Bokeh(采用Echarts)
3 Django基础配置安装
1 创建项目,项目决策分析:xmjc_analysis
在E盘根目录下创建xmjc_analysis:
1
|
django-admin startproject xmjc_analysis
|
效果:
settings.py 项目的设置文件
urls.py 总的urls配置文件
wsgi.py 部署服务器文件
__init__.py python包的目录结构必须的,与调用有关。
2 创建App名为analysis
1
|
django-admin startapp analysis
|
效果:
3 新定义的app加到settings.py中的INSTALL_APPS中
4 视图和网址创建第一个页面
(1)我们在analysis这个目录中,把views.py打开,修改其中的源代码:
1
2
3
4
5
6
7
8
9
10
|
'' '
第一个页面
author:白宁超
site:http: //www.cnblogs.com/baiboy/
'' '
#coding:utf-8
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse(u "欢迎进入第一个Django页面!" )
|
第一行是声明编码为utf-8, 因为我们在代码中用到了中文,如果不声明就报错.
第二行引入HttpResponse,它是用来向网页返回内容的,就像Python中的 print 一样,只不过 HttpResponse 是把内容显示到网页上。
我们定义了一个index()函数,第一个参数必须是 request,与网页发来的请求有关,request 变量里面包含get或post的内容。
(2)我们打开 xmjc_analysis/xmjc_analysis/urls.py 这个文件, 修改其中的代码:
1
2
3
4
5
6
7
8
9
10
|
from django.conf.urls import url
from django.contrib import admin
from analysis import views as analysis_views
urlpatterns = [
url(r '^admin/' , admin.site.urls),
url(r '^index/$' , analysis_views.index,name= 'index' ),# 首页
]
|
(3)本地运行服务器测试
注意在项目根目录xmjc_analysis运行结果如下:
(4)页面传参数,显示欢迎‘admin’字样
修改view.py源码:
通过get方式接受页面参数,当然也可以采用post,结合form实现。效果如下
5 配置简单数据库操作,默认sqlite,咱们指定mysql数据库
(1)在xmjc_analysis/settings.py文件下修改如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
'' '
配置Mysql数据库
2017年7月26日16:40:38
白宁超
'' '
DATABASES = {
'default' : {
'ENGINE' : 'django.db.backends.mysql' ,
'NAME' : 'test' ,
'USER' : 'test' ,
'PASSWORD' : 'test123' ,
'HOST' : 'localhost' ,
'PORT' : '3306' ,
},
}
|
xmjc_analysis/__init__.py下修改:
1
2
|
import pymysql
pymysql.install_as_MySQLdb()
|
(2)在analysis/models.py下设计数据库表,采用ORM方式
1
2
3
4
5
6
7
8
9
10
11
|
from django.db import models
# Create your models here.
class User(models.Model):
username = models.CharField( '用户名' , max_length=30)
userpass = models.CharField( '密码' ,max_length=30)
useremail = models.EmailField( '邮箱' ,max_length=30)
usertype = models.CharField( '用户类型' ,max_length=30)
def __str__(self):
return self.username
|
(3) 在analysis/admin.py中定义显示数据
1
2
3
4
5
6
7
|
from django.contrib import admin
from .models import User
class UserAdmin(admin.ModelAdmin):
list_display = ( 'username' , 'userpass' , 'useremail' ) # 自定义显示字段
admin.site.register(User,UserAdmin)
|
(4)创建更改的文件,将生成的py文件应用到数据库
1
2
|
python manage.py makemigrations
python manage.py migrate
|
(5)创建超级管理员:用户名,test;密码密码:test123456
1
|
python manage.py createsuperuser
|
(6)登录后台查看信息
运行服务器:python manage.py runserver
可以看到后台信息,并对数据表进行增删改查操作,但是后台全部英文,可以改为中文显示?
后台管理设置为中文显示,xmjc_analysis/settings.py下修改代码:
1
|
LANGUAGE_CODE = 'zh-Hans' # 中文显示
|
再去查看:
(7) Django 提供的 QuerySet API,shell玩转MySql
在xmjc_analysis下输入【 python manage.py shell】,然后查询数据表。
创建一条用户信息:
1
|
User.objects.create(username= "李白" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" )
|
后台查看:
其他操作方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
# 方法 1
User.objects.create(username= "李白" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" )
# 方法 2
twz =User(username= "李白" , userpass= "libai123" ,useremail= "libai@163.com" ,usertype= "超级管理员" )
twz.save()
# 获取对象:
Person.objects.all()
# 满足条件查询
User.objects.filter(username= "李白" )
# 迭代查询:
es = Entry.objects.all()
for e in es:
print(e.headline)
# 查询排序:
User.objects.all().order_by( 'username' )
# 链式查询:
User.objects.filter(name__contains= "WeizhongTu" ).filter(email= "tuweizhong@163.com" )
# 去重查询:
qs = qs.distinct()
# 删除操作:
User.objects.all().delete()
|
1
2
|
# 更新操作:
Person.objects.filter(name__contains= "abc" ).update(name= 'xxx' )
|
1
2
3
|
数据的导出:
python manage.py dumpdata [appname] > appname_data.json
python manage.py dumpdata blog > blog_dump.json
|
1
2
|
导出用户数据
python manage.py dumpdata auth > auth.json # 导出用户数据
|
(8)批量向数据表导入数据
将name.txt导入数据库:
数据导入源码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
#!/usr/bin/env python
#coding:utf-8
#
from django.core import serializers
import json
import os
os.environ.setdefault( "DJANGO_SETTINGS_MODULE" , "xmjc_analysis.settings" )
'' '
Django 版本大于等于1.7的时候,需要加上下面两句
import django
django.setup()
否则会抛出错误 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
'' '
import django
import json
if django.VERSION >= (1, 7):#自动判断版本
django.setup()
def main():
from analysis.models import User
f = open( './readme/files/name.txt' ,encoding= 'utf-8' )
for line in f:
name,pwd,email,type = line.split( '|' )
User.objects.create(username=name,userpass=pwd,useremail=email,usertype=type)
f.close()
def jsondb():
from analysis.models import User
data = eval(serializers.serialize( "json" , User.objects.all())) # json
userdata = json.dumps(data)
print(type(userdata))
if __name__ == "__main__" :
main()
# jsondb()
print( '插入完毕!' )
|
查看结果:
>> 至此,基本熟悉上手了。深入学习待续...
#######################
转自:http://www.cnblogs.com/baiboy/p/django1.html
号称最为简明实用的Django上手教程相关推荐
- 【秒懂】号称最为简明实用的Django上手教程
https://www.cnblogs.com/baiboy/p/django1.html 阅读目录 1 几个基本概念 2 Django配置准备 3 Django基础配置安装 摘要:Django的 ...
- 【秒懂】号称最为简明实用的Django上手教程(下)
号称最为简明实用的Django上手教程(下) 作者:白宁超 2017年8月25日08:51:58 摘要:上文 号称[最为简明实用的Django上手教程]介绍了django基本概念.配置和相关操作.相信 ...
- pythondjango教程_【秒懂】号称最为简明实用的Django上手教程
作者:白宁超 2017年8月24日09:37:35 摘要:Django的学习教程也是分门别类,形式不一.或是较为体系的官方文档,或者风格自由的博客文档,或者偏向实例的解析文档.即使官方文档,章节较多, ...
- 号称最为简明实用的Django上手教程(下)
1 前景回顾 系统环境:WIN10 64bit 开发环境:sublime+Anaconda 数据库:Mysql 5.6.17 语言:python3.5 框架:django1.11+Bootstrap ...
- 简明藏文文法和实用藏文文法教程笔记
简明藏文文法 胡书津 一.格助词 传统藏文文法称之为'属于格位范畴的虚词'.P11 它是名词在句中扮演什么样角色的一种标志.P11 通过一定的语法形式(格标志)表示名词性词语在语言结构中同其他词语的种 ...
- 《Django开发教程》1.2 在ubuntu上安装Django
Daozy极限编程出品 第一步:确认已经安装python3和pip % python3 Python 3.9.12 (main, Mar 26 2022, 15:51:13) [Clang 12.0. ...
- 申请 Let's Encrypt 数字证书,并安装cerbot快速上手教程~~
申请 Let's Encrypt 数字证书,并安装cerbot快速上手教程~~ Let's Encrypt SSL证书介绍 如今,越来越多的网站已经由HTTP迁移到HTTPS安全协议了.HTTPS不但 ...
- Spring Boot WebFlux 上手教程
Spring Boot WebFlux 上手教程 背景 大家都知道,Spring Framework 是 Java/Spring 应用程序跨平台开发框架,也是 Java EE(Java Enterpr ...
- RK3308(2) --- 上手教程
上手教程 开机 确认主板配件连接无误后,通过 USB Type-C 线给 ROC-RK3308-CC 供电.可接电源适配器,也可接到PC主机上.要求工作电压 5V ,工作电流 500mA 以上.上电即 ...
- 带有MySQL和Bootstrap的Django 3教程和CRUD示例
目录 Django 3功能 先决条件 Django 3教程,第1步--创建MySQL数据库 Django 3教程,第2步--初始化新的虚拟环境 Django 3教程,第3步--安装Django和MyS ...
最新文章
- “领悟”的价值是什么?思维能力训练问答
- 如何远程链接linux服务器,如何远程登陆Linux/Windows服务器
- 关于prefrenceactivity和preferencefragment的作用
- php命令执行无法重定向输出,php – CodeIgniter 3重定向功能无法正常工作
- python提取图片文字视频教学_用Python提取视频中的图片
- 转---猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒 [观察者模式]
- mysql 8.0 ~ innodb与变量优化
- vue: 从组件通讯到vuex (上)
- Idea集成使用SVN教程
- 宏基 Acer 4741G ubuntu10.10 GT 330M显卡驱动
- ADSL(中国电信\电信)常见故障代码…
- Mac 打造高效工作流
- Arduino基础入门二之呼吸灯
- 【数据分析自学】一、系统认识数据分析
- 天下长安手游怎么用电脑玩 天下长安手游模拟器教程
- YDOOK: ANSYS Maxwell 19 教程14:Maxwell 2D 静电场怎样设置激励源 静电场有哪些激励源
- 同等学历申硕计算机综合,2019年同等学力人员申请硕士学位外国语水平和学科综合水平全国统一考试[计算机]训练题及答案...
- pytorch用法笔记--不定期更新
- CSS实现水平垂直居中的几种方式
- linux如何提取文件名称,Linux shell 之 提取文件名和目录名的一些方法总结
热门文章
- 2018最受欢迎数据采集20大产品产品名单出炉!
- Low-Resource Knowledge-Grounded Dialogue Generation_biji
- 8. 无内容可写?应该注重平常的素材收集
- 苹果自带相册打马赛克_原来手机点击这个按钮,就能一键生成音乐电子相册!这也太厉害了...
- Kmplayer的各种功能设置
- 「游戏」c++贪吃蛇1.1
- C++实现跑酷小游戏(转载)
- 蓝奏云自定义域名链接替换网站源码
- FPGA信号处理系列文章——定点数据截位处理
- 最新机器视觉研究团队汇总