【Django入门】使用Django开发项目

参考资料:《Python编程:从入门到实践》——【美】Eric Matthes 著 袁国忠译

Python版本:3.9.5

django版本:3.2.6

系统:Windows 10

1. 建立项目

1.1 制定规范

所谓规范,也就是目标。在这个项目中,我们要实现什么功能,用户在这个程序中能够做什么,项目的外观以及用户的界面等等都应包含进规范中。

制定规范的时候要遵循一句话——时刻为用户考虑

假定我们在这里已经确定了项目的名字为hahaproject

1.2 建立虚拟环境

所谓虚拟环境是系统的一个位置,你可以在其中安装Python包,并将其与其他Python包隔离。这种借助虚拟环境所做的隔离操作是有用且必要的。(必要性会在你将项目部署到服务器时体现出来!

  • 第一步:在电脑中某个位置新建文件夹,命名为hahaproject(建议新建到D盘,节省C盘空间,这里假设我们新建的这个文件夹的路径是D:\hahaproject)。

  • 第二步:打开终端(快捷键:Windows键+R后运行cmd),先输入d:切换到D盘,然后输入cd hahaproject(注意’cd’后面有一个空格),切换到这个目录。(注意!!!后面所有的代码都是在这个目录下执行的!!!如下图所示。
    在这里插入图片描述

  • 第三步:使用如下命令创建虚拟环境

    D:\hahaproject>python -m venv hhp_env
    D:\hahaproject>
    

以上三步执行完毕后,你会发现刚刚创立的空文件夹里出现了文件。我们这里运行了Python模块venv,并用它创建了伊特名为hhp_env的虚拟环境。

1.3 激活虚拟环境

使用下面这个命令激活虚拟环境:

D:\hahaproject>hhp_env\Scripts\activate
(hhp_env) D:\hahaproject>

环境处于活动状态之后,环境名会包含在括号内。在这种情况下,我们可以在环境中安装包,并使用安装的包。在hhp_env中安装的包仅在该环境处于活动状态时才可用

如果你想停止使用该虚拟环境,可执行命令deactivate:

(hhp_env) D:\hahaproject>deactivate
D:\hahaproject>

如果直接关闭运行虚拟环境的终端,虚拟环境也将不再处于活动状态!

1.4 安装 Django

创建并激活虚拟环境之后,就可以安装Django了(这里使用3.2.6版):

(hhp_env) D:\hahaproject>pip install Django==3.2.6
Collecting Django==3.2.6
...(略)
Successfully installed Django-3.2.6 asgiref-3.4.1 pytz-2021.1 sqlparse-0.4.1

别忘了,Django 只在当前虚拟环境处于活动状态时才可用!

1.5 在 Django 中创建项目

执行下面的命令(千万千万不要忘记末尾的一个空格和一个句点,这个句点让新项目使用合适的目录结构,这样开发完成后可轻松地将应用程序部署到服务器):

(hhp_env) D:\hahaproject>django-admin startproject hahaproject .
(hhp_env) D:\hahaproject>

执行完上述地命令之后,项目就创建成功了,我们使用命令dir来查看目录下出现了哪些文件:

(hhp_env) D:\hahaproject>django-admin startproject hahaproject .
(hhp_env) D:\hahaproject>dir
···

从输出中可以看到当前目录下有两个文件夹,一个python文件,分别是:hahaproject, hhp_env, manage.py

下面我们再查看一下文件夹hahaproject中有哪些文件,在命令dir后加上文件夹名,中间以空格隔开:

(hhp_env) D:\hahaproject>django-admin startproject hahaproject .
(hhp_env) D:\hahaproject>dir
···
(hhp_env) D:\hahaproject>dir hahaproject
...

从输出中我们可以看到这个文件夹中有五个.py文件,最重要的是settings.py(指定Django如何与你的系统交互以及如何管理项目),urls.py(告诉Django应创建哪些网页来响应浏览器请求),wsgi.py(帮助Django提供它创建的文件,wsgi web server gateway interface 即Web服务器网关接口的首字母缩写)这三个文件。

1.6 创建数据库

Django将大部分与项目相关的信息都存储在数据库中,因此我们需要创建一个供Django使用的数据库。请在虚拟环境处于活动状态的情况下执行下面的命令:

(hhp_env) D:\hahaproject>python manage.py migrate
Operations to perform:
  ...
  Applying sessions.0001_initial... OK
(hhp_env) D:\hahaproject>

再输入dir查看当前文件夹中的文件可以看到多出来了一个文件db.sqlite3

1.7 查看项目

下面来核实Django是否正确创建了项目。为此执行命令runserver,如下所示:

(hhp_env) D:\hahaproject>python manage.py runserver

输入之后按回车,出现如下图所示的一串代码:
在这里插入图片描述

当前服务器处于开启状态,使用的端口是默认端口8000,也可以在输入的时候指定端口,比如:

(hhp_env) D:\hahaproject>python manage.py runserver 8001

运行之后,打开一款Web浏览器,并输入URL: http://127.0.0.1:8000/,你将看到如下页面:
在这里插入图片描述

现在先不要关闭这个服务器。如果要关闭,按Ctrl+C即可。

2. 创建应用程序

这一步我们将定义模型激活模型创建超级用户向管理网站注册我们自己创建的模型使用交互式环境探索存储在项目数据库中的数据

在完成上面这些操作之前,我们需要建立创建应用程序所需的基础设施。

当然,在前面打开的终端的窗口中应该还运行着runserver,在Web浏览器中所做的操作,这个终端中都会有一段相应的代码,所以我们需要再打开一个终端窗口,切换到manage.py所在目录(即刚刚的hahaproject文件夹内)。然后再激活该虚拟环境,再执行下面的操作。

下面执行命令startapp

(hhp_env) D:\hahaproject>python manage.py startapp hahaprojects
(hhp_env) D:\hahaproject>

startapp后面的是appname,这里我们用的是hahaprojects。执行该命令后,我们再输入命令dir查看,可以发现,新增一个文件夹hahaprojects。再输入命令dir hahaprojects查看其中的文件。其中最重要的是三个文件:models.py(在2.1中会用到), admin.py(在2.4中会用到), views.py

2.1 定义模型

首先需要思考涉及的数据有哪些。

思考完毕后,打开models.py,你可以在其中创建需要的中包含属性方法。我们在代码层面创建的就是所谓的模型模型告诉Django如何处理应用程序中存储的数据。

这里假设我们创建了一个名为Laughter。代码如下:

from django.db import models

#上面是原来有的代码,下面是要添加的代码

class Laughter(models.Model):
    """笑声"""
    owner = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        """返回笑声的所有者"""
        return self.owner

2.2 激活模型

要使用模型,必须让Django将应用程序(我们上面创建的hahaprojects就是一个应用程序)包含到项目中。为此,打开settings.py(路径为:D:\hahaproject\hahaproject\settings.py),找到一个名为INSTALLED_APPS的元组,在其中添加自己创建的应用程序的名字:

--snip--
INSTALLED_APPS = (
	--snip--
    'django.contrib.staticfiles',
    
    #上面是原本就有的部分,下面是自己添加的部分
    # My apps
    'hahaprojects',
)
--snip--

下面,需要让Django修改数据库,使其能够存储与我们定义的模型相关的信息。为此,在终端窗口执行下面的命令:

(hhp_env) D:\hahaproject>python manage.py makemigrations hahaprojects

执行后出现- Creat model Laughter这样的语句表明修改成功。

然后应用这种迁移,让Django帮我们修改数据库:

(hhp_env) D:\hahaproject>python manage.py migrate
...
  Applying hahaprojects.0001_initial... OK

如果应用迁移时一切正常,会出现最后一句(OK)。

每当需要修改该项目管理的数据的时候,都采取如下三个步骤:

  1. 修改models.py
  2. 执行命令:python manage.py makemigrations app_name
  3. 再执行命令:python manage.py migrate

2.3 创建超级用户

Django 允许你创建具备所有权限的用户——超级用户。

为在Django中创建超级用户,执行命令:

(hhp_env) D:\hahaproject>python manage.py createsuperuser
Username:...
Email address:
Password:
Password(again):
Superuser created successfully.
(hhp_env) D:\hahaproject>

按照提示输入用户名和密码(注意:输入的密码不会显示出来,输完之后直接按回车键即可),电子邮件可留为空。最后显示的Superuser created successfully.则表示创建成功。

2.4 向管理网站注册模型

打开admin.py,我们需要在这里添加代码行来注册我们创建的类Laughter,代码行如下:

from django.contrib import admin

#上面是原来有的,下面是要添加的

from hahaprojects.models import Laughter

admin.site.register(Laughter)

然后访问URL:http://127.0.0.1:8000/admin/,然后输入注册时的用户名和密码,你在网页中能够添加和修改用户和用户组,还可以管理与刚才定义的模型Laughter相关的数据。

注:如果你看到浏览器提示访问的网页不可用,请确认一下第一个打开的终端窗口中运行着Django服务器。

2.5 向管理网站注册我们自己创建的模型

2.5.1 定义模型 LaughReason

比如我们想再创建一个模型,那么再次打开models.py,在文件末尾添加一个新定义的就好了。这里,比如我们定义了一个新类LaughReason,并通过ForeignKey将之与前面的Laughter联系起来,语句如下:

from django.db import models

class Laughter(models.Model):
	--snip--
    
#上面是已有的代码,下面是要添加的代码

class LaughReason(models.Model):
    """笑产生的原因"""
    laugh = models.ForeignKey(Laughter,on_delete=models.CASCADE)
    reason = models.TextField()#这里我们不限制字数
    date_added = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        """返回原因的字符串表示"""
        if len(self.reason) > 50:
            return self.reason[:50] + "..."
        else:
            return self.reason
2.5.2 迁移模型LaughReason

由于我们添加了一个新模型,因此需要再次迁移数据库。过程和2.2 末尾加粗部分一样,执行如下指令:

(hhp_env) D:\hahaproject>python manage.py makemigrations hahaprojects
Migrations for 'hahaprojects':
  hahaprojects\migrations\0002_laughreason.py
  - Creat model LaughReason
(hhp_env) D:\hahaproject>python manage.py migrate
Operations to perform:
  --snip--
  Applying hahaprojects.0002_laughreason... OK

生成了一个新的迁移文件——0002_laughreason.py,他告诉Django如何修改数据库,使其能够存储与模型LaughReason相关的信息。

2.5.3 向管理网站注册LaughReason

我们还需要注册模型LaughReason。为此,将admin.py修改成下面这样:

from django.contrib import admin

from hahaprojects.models import Laughter, LaughReason#注意这里又加了新的东西

admin.site.register(Laughter)

admin.site.register(LaughReason)

返回到http://127.0.0.1:8000/admin/中,刷新一下,你会发现hahaprojects下列出了LaughReasons

2.6 使用交互式环境探索存储在项目数据库中的数据

这里我们将使用Django shellDjango shell是测试项目和排除其故障的理想之地。

使用下面的命令进入shell会话:

(hhp_env) D:\hahaproject>python manage.py shell
>>> 
2.6.1 获取模型的所有实例

我已经事先创建了两个实例,owner分别是a和b。
在这里插入图片描述

(hhp_env) D:\hahaproject>python manage.py shell
>>> from hahaprojects.models import Laughter
>>> Laughter.objects.all()
<QuerySet [<Laughter: a>, <Laughter: b>]>

QuerySet称为查询集,是一个列表。

2.6.2 查看分配给每个主题对象的ID
>>> laughters = Laughter.objects.all()
>>> for laughter in laughters:
...   print(laughter.id, laughter)
...
1 a
2 b

知道对象的ID后,就可获取对象并查看其任何属性。

2.6.3 由对象ID获取对象并查看属性
>>> t = Laughter.objects.get(id=1)
>>> t.owner
'a'
>>> t.date_added
datetime.datetime(2021, 8, 11, 13, 29, 23, 647811, tzinfo=<UTC>)
2.6.4 查看与Laughter相关的LaughReason
>>> t.laughreason_set.all()
<QuerySet [<LaughReason: no reason>]>

为通过外键关系获取数据,可使用相关模型的小写名称+_+set

注:每次修改模型后,都需要重启 shell(输入exit()或者按Ctrl+Z退出shell),这样才能看到修改的效果。

未完待续……

下篇内容预告:
3. 创建主页
​4. 创建其他网页

链接指路:
下一篇:【Django入门】使用Django开发项目(续)

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值