Django 教程——目录

前言

  1. 就是我们本次教程主要以项目为主,不推荐使用其为文档使用
  2. 我们本次不做博客
  3. 本次的项目地址在 gitee
  4. 本次项目采用 Django LTS 3.2

为什么用 Django

其实用几句话就可以说清楚。

  1. 方便到家了。隔壁的 Flask 同学要实现基础的数据库功能还要安装两个库,而 Django 呢?直接是内置功能。
  2. 项目结构清晰。任何一个 Django 项目,都要符合 Django 给出的规范,这在阅读开源项目的时候很有用。
    Flask:与框架斗争!
  3. 周边库多。虽然说基础功能都给你内置了,但是还是有些花边功能要第三方社区实现的。而 DjangoPyPI 的第三方库的数量是高于 Flask 的。

所以说,还是很值得用 Django 库的。

安装

如果你没有安装 Python 3 的话,Bing 见。
我们在此假设你安装了 Python 3
用过 Python 3 的同学肯定知道:安装库不就一行指令就完事了吗!

pip install django==3.2

TIPS: Mac OS 用户请将上面的指令换成 pip3 install django==3.2

然后经过了10来分钟的等待,显示超时
很显然,PyPI 那个服务器在国内基本上不在可用状态
所以说,我们要使用我们大天朝的镜像服务器来安装 Django

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple django==3.2 

Mac OS 用户请将 pip 换成 pip3,接下来的几个扩展库的安装将不在赘述。

然后呢,1分钟后,世界和平。

启动你的第一个项目

Django 并不像 Flask,随便搞一个文件就可以启动了,我们需要启动一个项目

django-admin startproject <你的项目名>

TIPS:项目名里面不要有横杠(-)

然后查看一下你刚才操作时所在的文件夹:

不会看不到图片吧

你会发现多出了一个文件夹,以你的项目名命名。

我们来稍微整理一下目录结构:

—— <你的项目名>/ # 就是刚刚的那个文件夹  
———— <还是你的项目名>/ # 里面是一些 Django 帮你自己填进去的一些有关项目的玩意,以便启动  
———— manage.py # 这玩意是对 Django 启动项目用的脚本的一个封装,用于启动项目  

好了,终于来到这一步:启动项目!

python manage.py runserver

TIPS:Mac OS 用户们,将 python 替换成 python3

在输出一大堆东西的情况下,我们打开浏览器,访问 127.0.0.1:8000

“哇”,可能你会发出感叹,“Django 是世界上最好的开发平台!我还没写代码就有那么多内容了!
同学,告诉你一个事实:这只是 Django 在告诉你,你的项目创立的很成功!
接下来,你还是要写很多代码。
所以说,请做好准备!

APP 这个东西

如果你的项目还开着的话,请先按下 Ctrl-C,停下项目。
然后,我们要新增一个 APP

python manage.py startapp note

等等,APP 是个什么玩意?
可以这样理解:项目是一个大玩意,里面包括着整个网站的资源
APP 则是一个小玩意,专心做好一项功能。

例如,一本同学录,他会有班级简介、同学签名、同学介绍、老师介绍这些东西;
其中“同学录”就是一个项目,它大而全,包含了所有功能
而班级简介、同学签名、同学介绍、老师介绍则是 APP,它负责自己的功能,组成同学录(项目)

然后,我们发现项目文件夹里多了一个名为 note 的文件夹。
我们来观察这个文件夹的结构:

—— note/ # 整个 APP 都存储在这里
———— migrations/ # 先不要管,待会儿要用
———— __init__.py # 让 Python 认为这是一个库,Django 好调用
———— admin.py # 用于让 Django 给你准备的管理员页面识别出你需要的玩意
———— models.py # 用于创建 model(待会儿说是什么)
———— tests.py # 写测试,本次不会用到
———— views.py # 负责编写具体的逻辑

好了,我们来讲讲,model 是个什么玩意?
举个栗子,例如我们有一个和谐有爱的班集体,里面有很多同学。
每个同学都有一些自己的个人信息:例如他是1号,姓名陈仁杰,代号穿山甲,入学日期2016.09.01······
这种个人信息的集合就叫做 model

model 的编写

Django 非常方便,因为它给我们隐藏了与数据库通信的细节,我们并不需要编写一串一串面条般的 SQL 语句。
所以说,我们打开 note APP 下的 models.py 文件,来开始愉快的写代码吧!

from django.db import models

# Create your models here.

class Note(models.Model):
    note_text = models.TextField()
    title = models.CharField(max_length=20)
    date = models.DateTimeField(auto_now_add=True)

现在,我们开始解释这些代码。
Line 1:这行代码是导入 Django 自带的 models 模块,这玩意用于导入所有 model 的爸爸 models.Model 和各种字段。
Line 2-4:空行+注释,跳过。
Line 5-7:这些玩意是需要我们自己写的代码。由于复杂,逐行分解。

Line 5

class Note(models.Model):

这一行是定义了一个类,也是定义了刚刚提到的 model
熟悉 Python 的朋友可以看出来,我们继承了 models.Model 类,之所以这样,是因为 Django 很挑剔,只有特定的类才能入它的法眼,而这种特定的类,统统要继承 models.Model 类。

Line 6

node_text = models.TextField()

这一行,我们定义了一个字段
什么是字段?回到同学录的例子,想想一下“同学信息”这个 model,它拥有姓名、生日、号数、爱好等等要填写的。
其中姓名、生日、号数、爱好这些玩意,就是”同学信息“这个 model 的字段。

Line 7

title = models.CharField(max_length=20)

本行比较简单,与上一行有异曲同工之处。
不过有一个神奇的参数 max_length,这玩意规定了字符字段的最大长度。

Line 8

date = models.DateTimeField(auto_now_add=True)

这也是一个字段,不过有一个地方:auto_now_add=True 是什么?
是这样的,由于又很多 model 都要标记自己创建的时间,所以说聪明的 Django 就给日期字段添加了这个参数。
这个参数的功能是:如果为 True,就在 model 添加的时候自动字段代表的时间添加为现在的时间。
就是这样!

未完待续······

posted on 2022-05-27 23:05  超能少年飞  阅读(58)  评论(0)    收藏  举报