如何新建一个django项目和应用?django项目开始起步
发布于 作者:苏南大叔 来源:程序如此灵动~
如何新建一个django项目?如何新建一个django应用?这两个问句是不一样的。一个是“项目”,一个是"应用"。这2个名词在django里面是不一样的。所以,在本文中,大家可以着重体验这2个名词的区别。还是以官方的tutorial为例,来开始本文的内容。

本文测试环境:python@3.7.4/django@2.2.4/mac。tutorial官方文档相关说明见文末链接。
创建项目结构
建一个新的项目的命令如下:
django-admin startproject <name>例如:
django-admin startproject mysite这里面,需要注意的是:最后一个参数mysite就是项目的名字,这个名字非常重要。
- 因为在对应的代码中,要大量使用这个名字。所以,在初始化的时候,请仔细想好了,想用的名字到底是什么。否则初始化之后,再修改就比较麻烦了。
- 这个名字,不能和保留字发生重合。比如保留字:
django(和django框架冲突)/test(和python内置组件冲突)。 - 这个命令执行完毕后,会生成两个嵌套的
mysite目录,第一层的文件夹名字是可以修改的。第二个文件夹名字,不能随意修改,因为会在代码中使用。

启动项目
创建好项目之后,就是启动django项目了。注意:这里需要在manage.py的同级目录,执行下述命令。命令如下:
python manage.py runserver
默认端口号是8000,您可以在启动命令后,增加一个可用的端口号,来更换一个新的端口号。例如:
python manage.py runserver 8888
这里需要说明的是:并不是传递一个端口号就可以生效的。因为需要端口号可用,而且在mac下,还需要自定义端口号在1024以上。这些都是特殊的地方,注意即可。否则有可能会遇到如下类似错误:
Error: That port is already in use.Error: You don't have permission to access that port.启动后的用户界面
启动之后,可以看到两个界面。一个是默认首页,另外一个是默认的后台管理页面。

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

而且管理后台,也是不能进入的,因为没有用户名密码。怎么才能进入后台呢?请参考苏南大叔的后续文字。
建新应用polls
这里讲述到了本文的重点内容,新建一个应用。假设应用名字是:polls。这个需要注意的是:需要cd到第一层目录,然后在manage.py文件同级,执行下述命令。建立应用的命令如下:
python manage.py startapp <name>例如:
python manage.py startapp polls
这个应用的名字也需要仔细想好再敲命令,因为这个名字也是要在代码中反复使用的。命令执行完成后,就可以看到。在项目根目录下面,和mysite目录同级的位置,会出现一个polls目录。两者的目录结构基本类似。
mysite下保存的是全局的配置信息。注意,是配置信息。没有逻辑上的传统网页代码。就是个配置目录。polls目录,下面除了自己独有的配置之外,还有部分传统的网页代码逻辑信息。

编写应用逻辑
因为在本文中,苏南大叔仅仅是简单测试目的。所以,这里就仅仅按着官方文档的说明,配置了polls应用的默认首页view信息。
polls/views.py:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
配置路由urls.py
需要配置mysite和polls两个位置的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了。

全局路由信息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')),
相关链接
- https://docs.djangoproject.com/zh-hans/2.2/intro/
- https://docs.djangoproject.com/zh-hans/2.2/intro/tutorial01/
总结
本文中,苏南大叔主要讲述了:在django项目中,如何新建一个应用,进而以自己的理解,阐述“应用”的概念和"项目"的概念有什么具体的区别。更多苏南大叔的django经验文章,请参考下面的链接: