资讯专栏INFORMATION COLUMN

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

paulli3 / 3534人阅读

摘要:内部结构时,页面发生错误会直接抛给前台,便于程序员进行修改。,用户新建了需要在该栏目下进行注册。拓展阅读图解笔记基础教程自强学堂备注该笔记源自网易微专业开发节本文由创作采用知识共享署名中国大陆许可协议进行许可。

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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/38535.html

相关文章

  • Python测试开发Django和Flask框架的区别

    摘要:在谈中框架和框架的区别之前,我们需要先探讨如下几个问题。通过大数据统计分析全球著名的网站对和这两个框架的调查分析。从全球著名的代码托管平台上的和数量上分别为,分别为。 在谈Python中Django框架和Flask框架的区别之前,我们需要先探讨如下几个问题。 一、为什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...

    B0B0 评论0 收藏0
  • Python web开发笔记五:Django开发进阶一

    摘要:在第一次执行循环时该变量为是一个布尔值在最后一次执行循环时被置为。注册自定义修改显示字段管理后台默认显示,在中添加返回值方法,修改显示效果。 理解上下文 render(request,x.html,context) request:请求的固定写法。 x.html:模板,需要填补丁的模板。 context:上下文,填充模板的补丁。 模板的使用流程 写模板,创建Template对象,用...

    Java_oldboy 评论0 收藏0
  • Python学习笔记:Web后端开发一览

    摘要:试想,在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到的对象必然不同。多线程服务器会创建一个线程池,再从线程池中选择一个线程用于处理接收到的请求。 框架 Django flask flask是一个轻量的web开发应用示例开发一个小应用 from flask import Flask app = Flask(__name__) @app.route(/) d...

    DrizzleX 评论0 收藏0
  • django官方文档1.11编翻:首页

    摘要:源网页说明文档所有关于你应该且必须知道的。性能和优化概述的兼容性旨在兼容多种不同版本的支持的兼容性地理框架打算成为世界级的地理框架。其目标是尽可能简单地构建应用程序并利用空间使能数据的功能。 源网页:https://docs.djangoproject.co... django说明文档 所有关于django你应该且必须知道的。 第一步 你是否django编程新手,那就从此开始!从零开始...

    Michael_Lin 评论0 收藏0
  • Python

    摘要:最近看前端都展开了几场而我大知乎最热语言还没有相关。有关书籍的介绍,大部分截取自是官方介绍。但从开始,标准库为我们提供了模块,它提供了和两个类,实现了对和的进一步抽象,对编写线程池进程池提供了直接的支持。 《流畅的python》阅读笔记 《流畅的python》是一本适合python进阶的书, 里面介绍的基本都是高级的python用法. 对于初学python的人来说, 基础大概也就够用了...

    dailybird 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<