你好,我是goldsunC
让我们一起进步吧!
从0到1搭建个人博客-Django(二)
在以下链接快速回顾系列文章内容
APP简介
我们在上一篇文章中创建了第一个Django项目my_blog
,这个项目就是搭建我们的个人博客,也可以简单理解为我们要做的那个网站。而在网站中,会需要很多的功能,比如有一个功能负责展示你写的文章,一个功能负责管理读者的留言等等。
这个APP
是application
的简称,也就是应用
,那它和my_blog
项目之间有什么区别呢?简单来说,APP是执行某项操作的Web程序
,而项目是咱们这个网站的各项配置与所有APP的集合。一个项目可以有多个APP,一个APP也可以在多个项目中。比如你有两个项目,一个是个人博客,一个是网络商城,但它们同时有管理留言的APP,也就是都支持用户留言,那么这个APP就可以被复用。
第一个APP
首先,打开命令行,从我们的虚拟环境中进入项目my_blog
所在目录。忘了怎么进?这里稍微提一下,忘掉的同学要给记牢了,可以去文章(一)
中回顾一下。
首先进入虚拟环境根目录django_project
:
我的如下:
然后输入以下代码进入虚拟环境(注意这篇文章代码中不再包含命令提示符,也就是需要你把所有代码输入进去):
env\Scripts\activate.bat
进入虚拟环境之后如下图所示:
接下来进入我们的项目文件夹my_blog
:
cd my_blog
进入之后输入如下指令:
python manage.py startapp article
这行指令让我们创建了一个名字为article
的APP。创建成功后,我们的项目文件夹my_blog
的目录结构应该是这样的:
my_blog
│ db.sqlite3
│ manage.py
│
├─article
│ │ admin.py
│ │ apps.py
│ │ models.py
│ │ tests.py
│ │ views.py
│ │ __init__.py
│ │
│ └─migrations
│ __init__.py
│
└─my_blog
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
│
└─__pycache__
settings.cpython-38.pyc
urls.cpython-38.pyc
wsgi.cpython-38.pyc
__init__.cpython-38.pyc
简单介绍以下目前需要知道的知识:
- 根目录下的
db.sqlite3
是一个数据库文件,用来存储我们项目产生的数据。 manage.py
是项目执行命令的入口,不需要更改,但每次执行命令几乎都用到它,比如启动服务器
、创建APP
。article
就是我们刚创建出来的APP目录,它现在还没有功能,但顾名思义我们创建它是想让它负责博客文章相关的功能。其中包含了后台管理文件admin.py
、数据模型文件models.py
、视图文件views.py
,存放数据迁移文件的目录migrations
。- 项目
my_blog
目录下的my_blog
目录,其中包含了setting.py
、urls.py
、wsgi.py
、__init__.py
,既然这个目录和项目目录名相同,那它肯定是管理项目本身的一些操作呀,setting.py
文件负责项目的配置参数,urls.py
是项目的根路由文件。
注册APP
刚才我们创建好了第一个APP。就像我们想造一辆车(项目),然后造好了负责行驶功能的轮子(APP)一样,接下来需要干嘛,当然是把轮子装在车上,让它们联系起来,这样车才能够使用这个轮子。而这步操作可以被称为APP的注册(settings)。
从这里开始我们需要写第一行程序代码了,这个时候你就可以打开你的代码编辑器了,开篇文章说过我用的Pycharm
,你用其他任何编辑器或者开发工具都可以,用IDLE
也可以,不管用什么,这一步打开my_blog
目录中的setting.py
文件,其中程序如下所示:
然后找到程序中的INSTALLED_APPS
片段,加入如下代码:
INSTALLED_APPS = [
```
其他代码
```
# 2020.10.10新增代码,激活APP article
'article',
]
如果完成之后,程序应该如下图所示:
加上这行代码之后,我们就相当于告诉了我们的项目my_blog
:现在article这个APP诞生了!
在这里强调一下,因为是第一次修改程序,因此给大家除展示代码片段之外额外展示了修改完成之后的图片,因为以后可能经常修改程序并且只修改一点,因此全部展示图片的话会大占文章篇幅,因此以后除重要程序之外只展示代码片段不再展示图片,大家可以对照这次的代码片段和图片理解一下修改程序的语句代表怎样的操作。
配置访问路径(urls)
url
好理解,就是我们访问网站时对应的网址链接
,只有配置好url,Django才知道如何定位APP。举个例子,每次我们在网站登录的时候会使用QQ、微信等账号,如果我们没有扫码登录,选择了账号密码登录,特别是在一些网站利用QQ登录的时候,会转到一个新的网址链接,如下图所示:
当前图片页面的网址链接就是相应APP的url,我们访问这个url,则代表用到了这个APP。
打开my_blog
目录下的urls.py
文件,增加以下代码:
# 2020.10.10新增代码,引入include模块
from django.urls import include
urlpatterns = [
path('admin/', admin.site.urls),
# 2020.10.10新增代码,配置article APP的url
path('article/', include('article.urls',namespace = 'article')),
]
article/
分配了对article
APP的访问路径。include
方法要记得引入,它的作用是将路径分发给下一步处理。namespace
保证反查到唯一的url,即使不同的APP使用了相同的url。
article/
为APP的访问路径,还记得吗我们的项目服务器地址是:http://127.0.0.1:8000/
,也就是说,你在服务器地址后再加上article/
就可以访问这个APP了,即访问的地址为:http://127.0.0.1:8000/article/
。
如果说article代表我们的博客文章的话,那么该文章肯定也会有其它属性,比如文章名列表、文章字数等等,简单来说就是在article/
下还可能存在其它的路径,比如:
http://127.0.0.1:8000/article/namelist/
http://127.0.0.1:8000/article/wordsnum/
那么我们就需要在article文件夹中创建一个新的文件urls.py
,以便于区分APP下的其它路径。创建之后article
文件夹目录应该如下所示:
article
│ admin.py
│ apps.py
│ models.py
│ tests.py
│ urls.py
│ views.py
│ __init__.py
│
└─migrations
__init__.py
打开刚创建的urls.py
文件,输入以下代码:
# 2020.10.10新增代码 引入path,view
from django.urls import path
from . import views
# 2020.10.10新增代码 APP名称
app_name = 'article'
# 2020.10.10新增代码 APP子路径
urlpatterns = [
# 当前为空
]
做到这里,关于APP的配置已经差不多了,为了让你有一点成就感,额外加一点其它内容,让你展示出你的第一个页面!
第一个页面
打开article
文件夹下的view.py
文件,在其中输入以下代码:
from django.http import HttpResponse
def HelloWorld(request):
return HttpResponse("Hello world!")
打开article
文件夹下的urls.py
文件,在空的urlpatterns
中输入:
path('',views.HelloWorld, name = 'HelloWorld'),
然后运行我们的服务器:
在虚拟环境的my_blog文件夹命令行中输入
:
python manage.py runserver
然后打开浏览器,输入:
http://127.0.0.1:8000/article/
展示如下界面:
页面左上角有个小小的Hello world!
证明今天任务完成!继续加油!
参考文献:
- https://www.dusaiphoto.com/article/2/
- https://docs.djangoproject.com/en/3.1/intro/