Django 创建第一个项目
本章我们将介绍 Django 管理工具及如何使用 Django 来创建项目,第一个项目我们以 HelloWorld 来命令项目。
测试版本说明:
-
Python 3.9.7
-
Django 4.2.7
通过以下命令可以查看版本号:
# python3 -V Python 3.9.7 # python3 -m django --version 4.2.7
Django 管理工具
安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin,Windows 如果没有配置环境变量可以用 django-admin。
我们可以来看下django-admin 的命令介绍:
$ django-admin Type 'django-admin help <subcommand>' for help on a specific subcommand. Available subcommands: [django] check compilemessages createcachetable dbshell diffsettings dumpdata flush inspectdb loaddata makemessages makemigrations migrate runserver sendtestemail shell showmigrations sqlflush sqlmigrate sqlsequencereset squashmigrations startapp startproject test testserver ……省略部分……
创建第一个项目
使用 django-admin 来创建 HelloWorld 项目:
django-admin startproject HelloWorld
创建完成后我们可以查看下项目的目录结构:
$ cd HelloWorld/ $ tree HelloWorld/ # 项目根目录 ├── manage.py # 项目管理脚本 ├── db.sqlite3 # SQLite 数据库文件 ├── __pycache__/ # Python 字节码缓存 └── HelloWorld/ # 项目配置目录(与项目同名) ├── __init__.py # 包标识文件 ├── settings.py # 项目设置 ├── urls.py # 主路由配置 ├── asgi.py # ASGI 配置 └── wsgi.py # WSGI 配置
项目根目录 (HelloWorld/):
文件/目录 | 作用 |
---|---|
manage.py | Django 命令行工具入口,用于运行开发服务器、数据库迁移等操作。 |
db.sqlite3 | SQLite 数据库文件(默认数据库,开发环境使用)。 |
__pycache__/ | Python 字节码缓存目录(自动生成,无需手动修改)。 |
主项目配置目录 (HelloWorld/HelloWorld/) :
文件/目录 | 作用 |
---|---|
__init__.py | 空文件,告诉 Python 该目录是一个包。 |
settings.py | 核心配置文件,包含: - 数据库设置 ( DATABASES )- 静态文件路径 ( STATIC_URL )- 应用注册 ( INSTALLED_APPS )- 调试模式 ( DEBUG=True/False ) |
urls.py | 主路由配置文件,定义 URL 路径与视图的映射关系。 |
asgi.py | ASGI 服务器配置(用于异步 Web 服务器,如 Daphne)。 |
wsgi.py | WSGI 服务器配置(用于传统 Web 服务器,如 Gunicorn、uWSGI)。 |
接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
python3 manage.py runserver 0.0.0.0:8000
0.0.0.0 让其它电脑可连接到开发服务器,8000 为端口号。如果不说明,那么端口号默认为 8000。
在浏览器输入你服务器的 ip(这里我们输入本机 IP 地址: 127.0.0.1:8000) 及端口号,如果正常启动,输出结果如下:
关键文件详解
1. settings.py(核心配置)
实例
# 安全警告:生产环境必须关闭 DEBUG!
DEBUG = True
# 允许访问的域名(DEBUG=False 时需配置)
ALLOWED_HOSTS = []
# 注册的 Django 应用
INSTALLED_APPS = [
'django.contrib.admin', # 管理员后台
'django.contrib.auth', # 认证系统
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles', # 静态文件处理
]
# 数据库配置(默认 SQLite)
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3', # 数据库文件路径
}
}
# 静态文件 URL(CSS/JS/图片)
STATIC_URL = 'static/'
2. urls.py(路由配置)
实例
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls), # 后台管理路由
# 可在此添加自定义路由,如:
# path('blog/', include('blog.urls')),
]
3. manage.py(项目管理脚本)
实例
import os
import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "HelloWorld.settings")
from django.core.management import execute_from_command_line
execute_from_command_line(sys.argv)
视图和 URL 配置
在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:
HelloWorld/HelloWorld/views.py 文件代码:
接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
HelloWorld/HelloWorld/urls.py 文件代码:
整个目录结构如下:
$ tree . |-- HelloWorld | |-- __init__.py | |-- __init__.pyc | |-- settings.py | |-- settings.pyc | |-- urls.py # url 配置 | |-- urls.pyc | |-- views.py # 添加的视图文件 | |-- views.pyc # 编译后的视图文件 | |-- wsgi.py | `-- wsgi.pyc `-- manage.py
完成后,启动 Django 开发服务器,并在浏览器访问打开浏览器并访问:
我们也可以修改以下规则:
HelloWorld/HelloWorld/urls.py 文件代码:
通过浏览器打开 http://127.0.0.1:8000/hello,输出结果如下:
注意:项目中如果代码有改动,服务器会自动监测代码的改动并自动重新载入,所以如果你已经启动了服务器则不需手动重启。
path() 函数
Django path() 可以接收四个参数,分别是两个必选参数:route、view 和两个可选参数:kwargs、name。
语法格式:path(route, view, kwargs=None, name=None)
route: 字符串,定义 URL 的路径部分。可以包含变量,例如
<int:my_variable>
,以从 URL 中捕获参数并将其传递给视图函数。view: 视图函数,处理与给定路由匹配的请求。可以是一个函数或一个基于类的视图。
kwargs(可选): 一个字典,包含传递给视图函数的额外关键字参数。
name(可选): 为 URL 路由指定一个唯一的名称,以便在代码的其他地方引用它。这对于在模板中生成 URL 或在代码中进行重定向等操作非常有用。
Django2. 0中可以使用 re_path() 方法来兼容 1.x 版本中的 url() 方法,一些正则表达式的规则也可以通过 re_path() 来实现 。
from django.urls import include, re_path urlpatterns = [ re_path(r'^index/$', views.index, name='index'), re_path(r'^bio/(?P<username>\w+)/$', views.bio, name='bio'), re_path(r'^weblog/', include('blog.urls')), ... ]