1 创建Project
1个Project可以对应多个app
django-admin startproject myproject
2 创建App
python manage.py startapp app01
INSTALLED_APPS = [
# ...
'app01',
'app02',
# ...
]
如果要让这个应用在项目中起作用,需要在项目的 settings.py
文件的 INSTALLED_APPS
配置中添加应用的名称。
3 启动项目
启动对象是一个项目,包含已经陪知道settings.py中的app
3.1 先初始化数据库
python manage.py makemigrations
python manage.py migrate
3.2 启动服务
python manage.py runserver 127.0.0.1:8000
4 自定义Django命令
4.1 自定义
需要在app的目录下建立management目录,command目录下文件名对应调用comman
app01/
__init__.py
models.py
views.py
management
commands
my_command.py
tests.py
admin.py
4.2 命令接受参数
from django.core.management.base import BaseCommand
from django.core.mail import send_mail
class Command(BaseCommand):
help = 'Sends an email to the specified recipient'
def add_arguments(self, parser):
parser.add_argument('action', type=str, help='Action for Job')
parser.add_argument('id', type=int, help='Job ID')
def handle(self, *args, **kwargs):
action = kwargs['action']
message = kwargs['message']
id = kwargs['id']
if action =='start':
start_job(id)
self.stdout.write(self.style.SUCCESS('Job star successfully'))
4.3 使用命令带参数
python manage.py my_command --action='start --id=1
5 Django完整项目目录
project_demo/
project_demo/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
manage.py
app01/
__init__.py
models.py
views.py
management
commands
my_command.py
tests.py
admin.py
app02/
__init__.py
models.py
views.py
tests.py
admin.py
static/
templates/
media/
project_demo/
: 顶层目录,与项目同名。
project_demo/__init__.py
: 一个空文件,告诉Python该目录应该被视为一个Python包。
project_demo/settings.py
: 包含项目的所有配置设置。
project_demo/urls.py
: 存储项目的URL路由配置。
project_demo/asgi.py
: 用于部署项目的ASGI兼容服务器入口点。
project_demo/wsgi.py
: 用于部署项目的WSGI兼容服务器入口点。
manage.py
: 一个命令行工具,让你通过各种方式管理Django项目。
app01/
: Django应用目录,应用的名称可以自定义。
app01/__init__.py
: 一个空文件,告诉Python该目录应该被视为一个Python包。
app01/models.py
: 定义应用的数据库模型。
app01/views.py
: 包含处理网页请求和响应的逻辑。
app01/tests.py
: 包含应用的测试代码。
app01/admin.py
: 定义了Django admin界面的模型配置。
static/
: 存储应用的静态文件(如CSS、JavaScript、图片等)。
templates/
: 存储应用的模板文件(Django HTML文件)。
media/
: 存储应用上传的媒体文件(如用户上传的图片和视频)。
这只是一个基本的项目结构,根据项目的复杂性和需求,可能还需要添加其他目录和文件。