这里说的app其实和平时手机中安装的app不是同一个概念。Django项目中的app主要是指某一类功能类似的模块,例如用户管理系统中的账号管理是一个app,权限管理又是一个app。
创建app
创建app的方式非常简单,直接通过以下命令就可以:
# 最后跟的是app的名称
python manage.py startapp app01
执行成功后,就会在工程中出现对应名称的app:
│ db.sqlite3
│ manage.py
│
├─app01
│ │ admin.py 【django默认提供的admin后台管理】
│ │ apps.py 【app的启动类,一般不会改动】
│ │ models.py 【对数据库进行操作】
│ │ tests.py 【单元测试】
│ │ views.py 【从url.py指向的函数】
│ │ __init__.py
│ └─migrations 【数据库的变更记录】
│ __init__.py
└─mysite
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
app中会默认新建一些文件,比较重要的就views.py和models.py
注册app
创建完app后,其实和整个Django项目是没有关联起来的。我们需要手动注册,打开settings.py文件,里面有一个INSTALLED_APPS的组数,将我们新建的app添加进去:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
]
最底下一行就是新增加的。为什么要写成'app01.apps.App01Config',是为了指向apps.py中的启动类。
指向app
要让用户能够访问到创建的app,就需要从urls.py进行指向,例如这样修改urls.py:
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path('admin/', admin.site.urls),
path('index/', views.index)
]
增加了第8行,当访问http://host/index/时,会执行views.py文件中的index函数。
上面指向了index函数,那肯定要到views.py中准备一个对应的函数:
from django.http import HttpResponse
def index(request):
return HttpResponse('Welcome in app01!')
当访问index函数的时候,返回一段文言。
启动项目
启动django项目,可以直接在项目manage.py文件所在目录执行以下命令:
python manage.py runserver
项目默认会使用8000端口,如果想指定端口,可以在命令后面加一个参数:
# 指定使用1234端口python manage.py runserver 0.0.0.0:1234
如果不想手动执行命令,也可以在pycharm配置一下:
如果要指定端口,也是在Parameters中进行指定。
当然如果你使用的是专业版,是不需要自己在配置启动文件的,ide会自动给你生成一个启动文件,直接运行就可以。
最终的效果就是这样:
总结
Django是非常完善的框架,按照提供的规则能非常简单的完成路由、请求、响应。