Django基本概念入门
一、什么是Django
Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。使用 Django,只要很少的代码,Python 的程序开发人员就可以轻松地完成一个正式网站所需要的大部分内容,并进一步开发出全功能的 Web 服务。
传统的web开发更多采用MVC模型而Django的实现方式是MVT模型
| MVC | MTV | |
|---|---|---|
| Module(模型) | Module(模型) | 处理与数据库的交互,定义数据的结构和业务逻辑 |
| View(视图) | Template (模板) | 负责数据展示,生成用户看到的 HTML 页面 |
| Controller(控制器) | View (视图) | 接收用户请求,调用 Model 处理数据,并将结果传递给 View 渲染页面 |
二、安装
shell
pip install Django
查看版本号
shell
python -m django --version
本次使用的是 5.0.7 版本
三、目录以及配置项说明
笔者使用的是pycharm,当然也可以使用其他编辑工具。
3.1 自动生成的目录
完成Django项目创建后整个project目录如下
textile
djangoProject/ -- 项目根目录
├── manage.py -- 项目管理命令行工具,项目的总指挥,通过它来执行
各种 Django 命令
└── djangoProject/ -- 项目容器目录(与项目同名)
├── __init__.py -- Python 包声明文件
├── settings.py -- 项目的核心配置文件
├── urls.py -- URL 路由声明配置文件
├── asgi.py -- ASGI 兼容服务器入口,用于 WebSocket 或异步视图。
└── wsgi.py -- WSGI 兼容服务器入口,生产环境通过此文件启动项目。
settings.py的核心配置项
| 配置项 | 说明 |
|---|---|
| DEBUG | 开发阶段设为 True,方便调试;生产环境必须设为 False |
| ALLOWED_HOSTS | 限制哪些域名/IP可以访问Django 应用(做安全设置) |
| INSTALLED_APPS | 项目中所有创建的应用,都必须在此处进行注册才能生效 |
| DATABASES | 配置数据库连接信息 |
| TIME_ZONE | 时区设置 |
| LANGUAGE_CODE | 语言设置 |
| STATIC_URL | CSS、JS 等静态文件的访问路径 |
| STATICFILES_DIRS | CSS、JS 等静态文件的存放目录 |
urls.py的配置
python
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
# 后台路由
path('admin/', admin.site.urls),
# 子应用路由分发
path('welcome/', include('welcome.urls')),
# 子应用路由分发,并为子应用指定命名空间,避免命名冲突
path('welcome//', include('welcome/.urls', namespace='welcome')),
]
3.2 非自动生成但较为常用的目录
tex
djangoProject/
├── apps/ -- 存放所有自定义应用
│ └── welcome/ -- 具体的应用
├── static/ -- 静态文件(CSS/JS/图片)
├── media/ -- 用户上传文件
├── templates/ -- 全局模板目录
│ └── welcome/ -- 具体的应用对应的模板
└── requirements.txt -- 项目依赖列表
需要在 settings.py 文件中配置apps目录
python
import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'apps'))
四、创建应用
Django中"创建应用"就是网站或Web项目,划分出一个独立的、功能单一的模块
应用目录说明
textile
app1/ -- 应用目录与创建的应用同名
├── __init__.py -- Python 包声明文件
├── admin.py -- 配置该应用的数据模型如何在Django后台管理系统中显示
├── apps.py -- 应用的配置信息(应用名称等)
├── models.py -- ** 定义应用的数据结构(数据库表)**
├── views.py -- ** 处理用户请求并返回响应的逻辑(业务逻辑)**
├── urls.py -- 应用内部独立的URL路由(默认无此文件,需要手动创建)
└── migrations/ -- 数据库迁移文件目录,用来同步models.py的变更
└── __init__.py
创建完成后需要在项目文件夹下的settings.py进行注册,可以看到该list参数的最后一个,这里需要填写我们的应用名称(此部分为pycharm自动生成,如果是手工创建应用则需要手动添加)。前面的几个都是Django的内置应用,不需要动。
python
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1.apps.App1Config',
]
五、运行项目
运行项目有两种方式
-
使用pycharm启动,直接点击运行。
terminal窗口日志如下
pythonSystem check identified no issues (0 silenced). You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. April 03, 2026 - 09:14:14 Django version 5.2.12, using settings 'djangoProject1.settings' Starting development server at http://localhost:8000/ Quit the server with CTRL-BREAK. WARNING: This is a development server. Do not use it in a production setting. Use a production WSGI or ASGI server instead. For more information on production servers see: https://docs.djangoproject.com/en/5.2/howto/deployment/浏览器访问如下链接可以正常访问到项目页面
urlhttp://localhost:8000也可指定端口
在pychram顶端中部点击下拉能看到 Edit Configurations 可以对项目运行的端口进行设置。
-
使用命令行启动
在项目manage.py同级目录下执行如下命令
(这里指定应用端口为82,不指定的话使用的是默认端口8000)
shellpython manage.py runserver 82
六、视图配置
在 djangoProject 文件夹下与 settings.py 同级目录下创建文件 views.py
python
from django.http import HttpResponse
def welcome(request):
return HttpResponse(" 欢迎来到 Django! ")
打开 urls.py 绑定视图函数和url
python
from django.urls import path
from . import views
urlpatterns = [
path('', views.welcome, name='welcome'),
]
运行后访问如下url即可访问
url
http://localhost:8000
也可修改访问规则
python
from django.urls import path
from . import views
urlpatterns = [
path('index/', views.welcome, name='welcome'),
]
运行后访问如下url即可访问
修改后自动生效不需要重新启动项目
url
http://localhost:8000/index
6.1 path函数的参数说明
python
path(route, view, kwargs=None, name=None)
| 参数 | 说明 | 案例 |
|---|---|---|
| route | 字符串,定义 URL 的路径部分,可以有变量,从 URL 中捕获参数并将其传递给视图函数。 | 'index/' |
| view | 视图函数,处理与给定路由匹配的请求。可以是一个函数或一个基于类的视图。 | views.welcome |
| kwargs(可选参数) | 一个字典,包含传递给视图函数的额外关键字参数。 | |
| name(可选参数) | 为 URL 路由指定一个唯一的名称,以便在代码的其他地方引用它。 | name='welcome' |
七、djang命令行(django-admin)
django-admin是django项目的命令行,用来管理项目,其实如果使用pycharm来做编程工具的话这部分其实已经非常自动化了,但还是需要学习了解一下。
-
帮助命令
bashdjango-admin help用来查看django提供的所有命令
-
创建项目
bashdjango-admin startproject 项目名称 -
创建应用
bashdjango-admin startapp 应用名称 -
检查项目配置
bashdjango-admin check用来检查Django的配置项是否正确
-
数据库迁移
个人不太喜欢这个官方叫法,容易引起误导,其实所谓的数据库迁移就是将model中定义的数据模型物理化到数据库中。简单理解就是依据创建的model文件,或者对model文件的变更,做对应的数据库层面的同步,保证model定义和数据库表结构一致。
创建迁移文件
bash
django-admin makemigrations
应用迁移到数据库
bash
django-admin migrate
但实际开发中真正用的是 python manage.py,相对而言第二种方式能自动识别settings文件,不需要做额外的指定。
首次执行准备数据库,创建所需的数据库表
python
python manage.py migrate
创建迁移文件
python
python manage.py makemigrations
查看生成的数据库SQL文件(可选,非必须执行)
python
python manage.py sqlmigrate <app_name> <migration_number>
应用迁移到数据库
python
python manage.py migrate
查看迁移状态
python
python manage.py showmigrations
回滚到上一迁移
python
python manage.py migrate <app_name> <previous_migration_name>
-
启动项目
pythonpython manage.py runserver [IP:端口]例如:python manage.py runserver 192.168.0.1:8888