我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

如何新建一个django项目?如何新建一个django应用?这两个问句是不一样的。一个是“项目”,一个是"应用"。这2个名词在django里面是不一样的。所以,在本文中,大家可以着重体验这2个名词的区别。还是以官方的tutorial为例,来开始本文的内容。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-start
如何新建一个django项目和应用?django项目开始起步(图11-1)

本文测试环境:python@3.7.4/django@2.2.4/mactutorial官方文档相关说明见文末链接。

创建项目结构

建一个新的项目的命令如下:

django-admin startproject <name>

例如:

django-admin startproject mysite

这里面,需要注意的是:最后一个参数mysite就是项目的名字,这个名字非常重要。

  • 因为在对应的代码中,要大量使用这个名字。所以,在初始化的时候,请仔细想好了,想用的名字到底是什么。否则初始化之后,再修改就比较麻烦了。
  • 这个名字,不能和保留字发生重合。比如保留字:django(和django框架冲突)/test(和python内置组件冲突)。
  • 这个命令执行完毕后,会生成两个嵌套的mysite目录,第一层的文件夹名字是可以修改的。第二个文件夹名字,不能随意修改,因为会在代码中使用。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-init
如何新建一个django项目和应用?django项目开始起步(图11-2)

启动项目

创建好项目之后,就是启动django项目了。注意:这里需要在manage.py的同级目录,执行下述命令。命令如下:

python manage.py runserver

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - python-runserver
如何新建一个django项目和应用?django项目开始起步(图11-3)

默认端口号是8000,您可以在启动命令后,增加一个可用的端口号,来更换一个新的端口号。例如:

python manage.py runserver 8888

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - python-runserver-port
如何新建一个django项目和应用?django项目开始起步(图11-4)

这里需要说明的是:并不是传递一个端口号就可以生效的。因为需要端口号可用,而且在mac下,还需要自定义端口号在1024以上。这些都是特殊的地方,注意即可。否则有可能会遇到如下类似错误:

Error: That port is already in use.
Error: You don't have permission to access that port.

启动后的用户界面

启动之后,可以看到两个界面。一个是默认首页,另外一个是默认的后台管理页面。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-index
如何新建一个django项目和应用?django项目开始起步(图11-5)

当然,这个时候,默认首页和后台都是不能修改的,因为代码不在项目根目录下面。这个很意外吧?好吧,django是不按常理出牌的。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-admin
如何新建一个django项目和应用?django项目开始起步(图11-6)

而且管理后台,也是不能进入的,因为没有用户名密码。怎么才能进入后台呢?请参考苏南大叔的后续文字。

建新应用polls

这里讲述到了本文的重点内容,新建一个应用。假设应用名字是:polls。这个需要注意的是:需要cd到第一层目录,然后在manage.py文件同级,执行下述命令。建立应用的命令如下:

python manage.py startapp <name>

例如:

python manage.py startapp polls

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-new-app
如何新建一个django项目和应用?django项目开始起步(图11-7)

这个应用的名字也需要仔细想好再敲命令,因为这个名字也是要在代码中反复使用的。命令执行完成后,就可以看到。在项目根目录下面,和mysite目录同级的位置,会出现一个polls目录。两者的目录结构基本类似。

  • mysite下保存的是全局的配置信息。注意,是配置信息。没有逻辑上的传统网页代码。就是个配置目录。
  • polls目录,下面除了自己独有的配置之外,还有部分传统的网页代码逻辑信息。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - django-new-app2
如何新建一个django项目和应用?django项目开始起步(图11-8)

编写应用逻辑

因为在本文中,苏南大叔仅仅是简单测试目的。所以,这里就仅仅按着官方文档的说明,配置了polls应用的默认首页view信息。

polls/views.py

from django.http import HttpResponse
def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - polls_view_index
如何新建一个django项目和应用?django项目开始起步(图11-9)

配置路由urls.py

需要配置mysitepolls两个位置的urls.py设置。

应用详细路由

polls/urls.py里面设置具体的页面路由信息:

from django.urls import path
from . import views
urlpatterns = [
    path('', views.index, name='index'),
]

全局路由生效

mysite/urls.py,负责引入polls里面的路由:

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

这里主要说一下mysite下面的urls,除了默认的后台模块admin的路由admin.site.urls之外,其它的程序猿编写的应用路由,都是使用include()函数引入的。

提升应用路由级别

因为引入polls模块后,原项目的默认首页就不能访问了。所以,苏南大叔个人建议把polls应用的路由设置为默认。这样的话,访问polls模块的时候,就可以通过默认首页/,而不是通过二级目录polls了。

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - urls_error
如何新建一个django项目和应用?django项目开始起步(图11-10)

全局路由信息mysite/urls.py,修改如下:

from django.contrib import admin
from django.urls import include, path
urlpatterns = [
    path('', include('polls.urls')),
    path('admin/', admin.site.urls),
]

关键修改点是:

path('', include('polls.urls')),

大家可以对比查看:

path('polls/', include('polls.urls')),

苏南大叔:如何新建一个django项目和应用?django项目开始起步 - polls_urls_fix
如何新建一个django项目和应用?django项目开始起步(图11-11)

相关链接

总结

本文中,苏南大叔主要讲述了:在django项目中,如何新建一个应用,进而以自己的理解,阐述“应用”的概念和"项目"的概念有什么具体的区别。更多苏南大叔的django经验文章,请参考下面的链接:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python    django