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

Why Django

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

Django特色

  • 强大的数据库功能python

  • 自带的强大的后台功能mysql

  • 优雅的网址程序员

  • 模板系统web

  • 缓存系统sql

  • 国际化数据库

Django应用案例

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

Django开发准备

一、安装pip
二、安装Django
三、安装pyflakes
四、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。

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

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

相关文章
相关标签/搜索