《Python web开发》笔记四:Django开发基础

Why Django

在一定的时间内,有限的技术情况下,建设一个高质量的网站,Django几乎成了唯一的方案。
Django把所有可能性都考虑到了,从这种程度上看复杂就意味着全面,毕竟时间更重要!

Django特点

  • 强大的数据库功能
  • 自带的强大的后台功能
  • 优雅的网址
  • 模板系统
  • 缓存系统
  • 国际化

Django应用案例

国外:Disqus、Pinterest、Instagram、NASA Science等
国内:豆瓣、知乎、饿了么等

Django开发准备

1、安装pip
2、安装Django
3、安装pyflakes
4、Atom安装插件:atom-django、autocomplete-python、platformio-ide-terminal(也可以用pycharm)

MTV模型

网页访问流程:

request ---->Django Web------>response

流程内部结构:

request——————>urls——————>views<——————models
                              |
                              |
                              ↓
                          templates

MTV

models-----数据: 作为数据库的代理人,通过 model 操作数据库。
Templates-----模板: 把数据填充进网页中进行渲染。
Views-----视图:把渲染好的网页返回给使用者,让我们可以在浏览器中看到网页。
Urls-----链接:找到每个 url 对应的 view。

为什么要MTV分开?

复杂的功能,分开可以单独的职责进行处理,快速找到错误,方便处理和维护。

最简单的Django网站:

网站创建的流程:P ---> A ---> D ---> M ---> V ---> T ---> U
P: 创建project django-admin startproject firstsite
A: 创建APP python manage.py startapp firstapp
D: 创建数据库 python manage.py migrate
M: 创建数据库的表 models创建相关模型类class
V: 创建视图 views创建相关视图def
T: 创建模板 templates/static 用模板语言进行修改
U: 创建对应的url正则关系 设置访问url

具体步骤分析

创建站点:

django-admin startproject firstsite

生成以下文件:

    firstsite
    ├── manage.py
    └── firstsite
        ├── __init__.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

文件解释:
manage.py:django中命令的运行文件,一般格式为:python manage.py 命令名称。
init.py:是python包的目录结构必须的。
setting.py:Django配置全局变量和属性的文件,比如 DEBUG 的开关,静态文件的位置等。
urls.py:网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
wsgi.py:部署服务器时用到的wsgi.py文件。

settings内部结构:

  • DEBUG = True时,页面发生错误会直接抛给前台,便于程序员进行修改。在真实环境中需要关闭,DEBUG=False。

  • 当 DEBUG=False 时,ALLOW_HOSTS这个为必填项,如果不想输入,可以用 ALLOW_HOSTS = ['*'] 来允许所有的访问。

  • INSTALLED_APPS,用户新建了APP需要在该栏目下进行注册。

  • TEMPLATES:若新建了templates文件夹,需要修改DIRS地址:
    'DIRS': [os.path.join(BASE_DIR, 'templates').replace('\', '/')],

  • DATABASES默认的是:sqlite3, 修改为mysql如下:
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'testdb',
    'USER':'younger',
    'PASSWORD':'123',
    'HOST':'',
    'PORT':'',
    }
    }

  • LANGUAGE_CODE = 'en-us', 中文修改为'zh-Hans'。

创建APP

python manage.py startapp firstapp
(项目站点的模块,一个project下面可以有多个app)

生成以下文件:
migrations: 生成数据库的py脚本文件夹。
__init__: 是python包的目录结构必须的。
admin.py:后台,可以用很少量的代码就拥有一个强大的后台。
models.py: 与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
views.py: 处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
tests.py: 网站的测试代码。

添加app到INSTALL_APPS

新建的app如果不加到INSTALL_APPS 中的话, django 就不能自动找到app中的模板文件(app-name/templates/下的文件)和静态文件(app-name/static/中的文件) 。

创建数据库

python mange.py makemigrations

makemigrations命令生成的文件会存到migrations/目录下,生成复杂的创建数据库的语句。

python mange.py migrate

之前的makemigrations操作只是生成migration文件,还没有对数据库进行操作,接下来执行migrate命令,完成数据的合并和修改。

makemigrations vs migrate
makemigrations的意思是将model编译成mysql可以理解的sql语句,存放在那个migrations文件夹里面。
migrate是将这个最新生成的py文件执行,让数据库能够按照sql语句进行表的修改。由于sql语句中有很多的标点符号是和python冲突的,经常需要转义数据库才能执行。因此直接使用model模块可以省去你很多书写sql语句的烦恼。

启动服务器

python mange.py runserver 临时测试的服务器

案例分析

views中定义视图

t = Template(html_string)      # 用来把 html 字符变成模板,类似于打孔。
c = Context({'person':person}) # 创建一个上下文 context,django 规定 context 必须是字典的形式,类似于造补丁。
web_page = t.render(c)         # 对模板进行渲染,把上下文渲染到模板里面,类似于打补丁。
return HTTPResponse(web_page)  # web_page表示的网页字符串转化具体可见的网页response。

拓展阅读:
1、《图解HTTP》笔记
2、Django 基础教程(自强学堂)

备注
该笔记源自网易微专业《Python web开发》1.1、1.2节
本文由EverFighting创作,采用 知识共享署名 3.0 中国大陆许可协议进行许可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容