号称简明实用的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环境已经安装。

后置条件:

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:

django-admin startproject xmjc_analysis

效果:

settings.py 项目的设置文件
urls.py 总的urls配置文件
wsgi.py 部署服务器文件
__init__.py python包的目录结构必须的,与调用有关。

2 创建App名为analysis

django-admin startapp analysis

效果:

3 新定义的app加到settings.py中的INSTALL_APPS中

4 视图和网址创建第一个页面

(1)我们在analysis这个目录中,把views.py打开,修改其中的源代码:

'''
第一个页面
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 这个文件, 修改其中的代码:

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文件下修改如下:

'''
配置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下修改:

import pymysql
pymysql.install_as_MySQLdb()

(2)在analysis/models.py下设计数据库表,采用ORM方式

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中定义显示数据

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文件应用到数据库

python manage.py makemigrations
python manage.py migrate

(5)创建超级管理员:用户名,test;密码密码:test123456

python manage.py createsuperuser

(6)登录后台查看信息

运行服务器:python manage.py runserver

 

可以看到后台信息,并对数据表进行增删改查操作,但是后台全部英文,可以改为中文显示?

后台管理设置为中文显示,xmjc_analysis/settings.py下修改代码:

LANGUAGE_CODE = 'zh-Hans' # 中文显示

再去查看:

(7) Django 提供的 QuerySet API,shell玩转MySql

在xmjc_analysis下输入【 python manage.py shell】,然后查询数据表。

创建一条用户信息:

User.objects.create(username="李白", userpass="libai123",useremail="libai@163.com",usertype="超级管理员")

后台查看:

其他操作方式:

# 方法 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()
# 更新操作:
Person.objects.filter(name__contains="abc").update(name='xxx')
数据的导出:
python manage.py dumpdata [appname] > appname_data.json
python manage.py dumpdata blog > blog_dump.json
导出用户数据
python manage.py dumpdata auth > auth.json # 导出用户数据

(8)批量向数据表导入数据

将name.txt导入数据库:

数据导入源码:

#!/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('插入完毕!')

查看结果:

 

时间: 2024-09-22 17:20:07

号称简明实用的Django上手教程的相关文章

号称最为简明实用的Django上手教程(下)

1 前景回顾 系统环境:WIN10 64bit 开发环境:sublime+Anaconda数据库:Mysql 5.6.17语言:python3.5框架:django1.11+Bootstrap可视化工具:Highchart|Echarts|plotly|Bokeh(采用Echarts) 2 静态文件配置操作  (1)静态static文件夹的配置. 在analysis文件夹下创建:analysis/static和analysis/templates文件夹,其中: ① static:包括,css,j

ASP.NET立即上手教程(1)

一.开始 1.介绍 欢迎光临ASP.NET立即上手教程. ASP.NET立即上手教程是由一系列实例和支持解说构成的,他的目的是为了让开发者快速理解ASP.NET的语法.框架以及ASP.NET网络应用程序框架的强大功能.所有的实例设计的短小而容易理解,可以充分展示ASP.NET的相应功能.在学习完本教程以后,你应该熟悉以下内容: ·ASP.NET语法.当然,对于熟练的ASP开发者,有些ASP.NET语法元素会很熟悉,而有些却是新框架所独有的.本教程的实例覆盖了所有语法元素的细节. ·ASP.NET

9个修图师整理实用的产品修图教程集

  9个修图师整理实用的产品修图教程集,产品图主要从三个方面基色.角度.光影的应用,让产品看起来更高端大气光彩,有购买欲,提升产品的竟争力,对这方面感兴趣可以自己收藏借鉴学习 分类: PS入门教程

微信公众平台快速上手教程Part4 关键词自动回复

中介交易 SEO诊断 淘宝客 云主机 技术大厅 课程来到了第四部分,这部分主要讲解自定义关键词应答设置,这是微信公众平台最核心部分希望大家可以认真阅读.如果对本篇教程有任何疑问或错漏之处欢迎留言或直接联系我进行更正修改. 我们点击高级功能会看到下图页面,里面有两种模式,一种是编辑模式,这也是我们最常用到的,另一种是开发模式,下一节课我们就会讲这个模式.现在我们点击进入编辑模式. 进入编辑模式后我们会看到默认开启的状态,点击里面的"设置"按钮,开始设置自动回复功能. 进入自动回复设置界面

Spring MVC快速上手教程

Spring Framework可以被使用在很多场合之中,考虑到目前大多数Java EE的项目是B/S结构的,所以这里的快速上手教程会以Spring MVC为切入点,用最简单的代码一步一步来实现一个图书列表的页面. 在正式动手之前需要做一些准备工作,先安装并设置好JDK 1.5和Tomcat 5,关于数据库及其访问方式可以根据个人习惯进行选择,教程中使用MySQL数据库和Hibernate(映射由Hibernate Annotation实现).请将实际使用到的jar文件复制到WEB-INF/li

Photoshop十分实用的日常磨皮教程一览

给各位Photoshop软件的使用者们来详细的解析分享一下十分实用的日常磨皮教程. 教程分享: 原图   1.PS好习惯Ctrl+J复制图层.   2.首先把脸上较为明显的污点痘痘处理一下,用去污工具或者仿制图章工具看你喜欢哪个了.   3.做一次USM锐化,数值看预览,适可而止.   4.Ctrl+J复制图层得到"图层1拷贝",到插件Portraiture里磨皮(下载:http:///photoshop/sucai/2015/z227224.html ),确定返回为该图层添加白色蒙版

微信公众平台快速上手教程Part9 详解自定义菜单与大家疑问

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 延伸阅读:微信公众平台快速上手教程Part8 微信是后端服务营销利器微信公众平台快速上手教程Part7 微信运营十大要决微信公众平台快速上手教程Part6 公众会议帐号微信公众平台快速上手教程Part5 开发模式讲解微信公众平台快速上手教程Part4 关键词自动回复微信公众平台快速上手教程Part3 素材编辑微信公众平台快速上手教程Part2

微信公众平台快速上手教程Part5 开发模式讲解

中介交易 SEO诊断 淘宝客 云主机 技术大厅 这部分主要讲解微信公众平台的开发模式,首先说明一下我不是程序员,所以本篇并非讲编程代码之类的,也并非开发模式的说明书,毕竟微信官方已经有一份详细的技术说明文档(在文章尾部提供文档地址),但是由于我们正在开发微信POP营销系统,所以我对开发模式有一定了解,这些了解应该会对准备尝试做微信开发的朋友会有一定帮助,少走部分弯路吧.如果对本篇教程有任何疑问或错漏之处欢迎留言或直接联系我进行更正修改. 首先我们要明确开发模式什么可以做,什么不可以做: 一.开发

微信公众平台快速上手教程Part6 公众会议帐号

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 有些朋友在注册微信公众平台的时候发现类型哪里可以选择为公众会议帐号,这一节我们来讲讲公众会议帐号.当大家选择公众会议帐号的时候,发现会出现红字提醒"会议号是有一定时间限制的公众帐号,过期后将无法登陆使用".但是据网友反映当会议帐号到期后,系统会自动切换回普通平台帐号,这样就可以继续使用,这个有待证实. 注册完成后,首先会进