美文网首页程序员IT在线课程我的Python自学之路
《Python web开发》笔记四:Django开发基础

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

作者: everfight | 来源:发表于2017-03-21 22:18 被阅读265次

    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 中国大陆许可协议进行许可。

    相关文章

      网友评论

        本文标题:《Python web开发》笔记四:Django开发基础

        本文链接:https://www.haomeiwen.com/subject/hqcgnttx.html