Django 创建第一个项目 - DJANGO教程

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(核心配置)

示例代码
# HelloWorld/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(路由配置)

示例代码
# HelloWorld/urls.py 示例fromdjango.contribimportadminfromdjango.urlsimportpathurlpatterns=[path('admin/',admin.site.urls),# 后台管理路由# 可在此添加自定义路由,如:# path('blog/', include('blog.urls')),]

3. manage.py(项目管理脚本)

示例代码
#!/usr/bin/env pythonimportosimportsysif__name__=="__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE","HelloWorld.settings")fromdjango.core.managementimportexecute_from_command_lineexecute_from_command_line(sys.argv)

视图和 URL 配置

在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 views.py 文件,并输入代码:

示例代码
fromdjango.httpimportHttpResponsedefhello(request):returnHttpResponse("Hello world !")

接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:

示例代码
fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path("",views.hello,name="hello"),]

整个目录结构如下:


$ 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 开发服务器,并在浏览器访问打开浏览器并访问:

我们也可以修改以下规则:

示例代码
fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('hello/',views.hello),]

通过浏览器打开 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')),

    ...

]