Django基本概念入门(一)

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',
]

五、运行项目

运行项目有两种方式

  1. 使用pycharm启动,直接点击运行。

    terminal窗口日志如下

    python 复制代码
    System 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/

    浏览器访问如下链接可以正常访问到项目页面

    url 复制代码
    http://localhost:8000

    也可指定端口

    在pychram顶端中部点击下拉能看到 Edit Configurations 可以对项目运行的端口进行设置。

  2. 使用命令行启动

    在项目manage.py同级目录下执行如下命令

    (这里指定应用端口为82,不指定的话使用的是默认端口8000)

    shell 复制代码
    python 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来做编程工具的话这部分其实已经非常自动化了,但还是需要学习了解一下。

  1. 帮助命令

    bash 复制代码
    django-admin help

    用来查看django提供的所有命令

  2. 创建项目

    bash 复制代码
    django-admin startproject 项目名称
  3. 创建应用

    bash 复制代码
    django-admin startapp 应用名称
  4. 检查项目配置

    bash 复制代码
    django-admin check

    用来检查Django的配置项是否正确

  5. 数据库迁移

    个人不太喜欢这个官方叫法,容易引起误导,其实所谓的数据库迁移就是将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>
  1. 启动项目

    python 复制代码
    python manage.py runserver [IP:端口]

    例如:python manage.py runserver 192.168.0.1:8888

相关推荐
m0_684501982 小时前
CSS如何实现左图右文布局_利用float属性与清除浮动
jvm·数据库·python
jedi-knight2 小时前
深入浅入 AI Agent:基于 Python 与 ReAct 模式的自主智能体实现
人工智能·python
源码站~2 小时前
基于机器学习的社交媒体舆情分析系统
开发语言·python
生信研究猿2 小时前
第2题-大模型Attention模块开发
python
2401_871696522 小时前
JavaScript中代码覆盖率Coverage在精简脚本中的应用
jvm·数据库·python
XiYang-DING2 小时前
【Java EE】多线程(1)
java·python·java-ee
m0_734949792 小时前
Python GUI界面如何实现主题美化_引入ttk模块实现原生外观风格
jvm·数据库·python
光影少年2 小时前
Python+LangGraph学习路线及发展前景
开发语言·人工智能·python·学习
m0_678485452 小时前
如何让导航栏的下落动画效果更慢?
jvm·数据库·python