目录
一、Django简介
Django的主要特点:
二、安装Django
环境要求
安装步骤
1.创建虚拟环境(推荐)
2.安装Django
3.验证安装
三、创建第一个Django项目
1. 创建项目
2. 项目结构说明
3. 启动开发服务器
四、Django基本语法和核心概念
1. 创建应用
2. 定义模型(Model)
3. 创建视图(View)
4. 配置URL(主路由)
五、子路由配置
1. 创建子应用路由文件
2. 路由参数说明
六、模板系统与静态文件
1. 创建模板目录结构
2. 基础模板 base.html
3. 文章列表模板 article_list.html
4. 静态文件配置
七、数据库迁移与管理员配置
1. 创建数据库迁移文件
2. 执行数据库迁移
3. 创建超级用户
4. 注册模型到管理员界面
八、完整的settings.py配置示例
九、常用命令总结
一、Django简介
Django是一个基于Python的高级Web框架,它遵循MVC(Model-View-Controller)设计模式,旨在帮助开发者快速构建复杂、可扩展的Web应用程序。Django以其"开箱即用"的特性闻名,提供了强大的ORM、自动管理界面、表单处理、用户认证等核心功能。
Django的主要特点:
完善的文档:拥有详细的中英文文档
强大的ORM:支持多种数据库后端
自动管理界面:根据模型自动生成后台管理界面
内置安全机制:防止SQL注入、CSRF等常见攻击
可扩展性:支持中间件、信号等扩展机制
二、安装Django
环境要求
Python 3.6或更高版本
pip(Python包管理器)
安装步骤
1.创建虚拟环境(推荐)
# 创建虚拟环境
python -m venv django_env
# 激活虚拟环境
# Windows
django_env\Scripts\activate
# Linux/Mac
source django_env/bin/activate
2.安装Django
pip install django
3.验证安装
python -m django --version
三、创建第一个Django项目
1. 创建项目
django-admin startproject myproject
cd myproject
2. 项目结构说明
myproject/manage.pymyproject/__init__.pysettings.pyurls.pyasgi.pywsgi.py
3. 启动开发服务器
python manage.py runserver
访问 http://127.0.0.1:8000 即可看到Django欢迎页面。(终端弹窗)
四、Django基本语法和核心概念
1. 创建应用
python manage.py startapp myapp
2. 定义模型(Model)
在myapp/models.py中:
from django.db import models
class Article(models.Model):title = models.CharField(max_length=200)content = models.TextField()created_at = models.DateTimeField(auto_now_add=True)updated_at = models.DateTimeField(auto_now=True)def __str__(self):return self.title
3. 创建视图(View)
在myapp/views.py中:
from django.shortcuts import render
from django.http import HttpResponse
from .models import Article
def home(request):return HttpResponse("欢迎来到首页!")
def article_list(request):articles = Article.objects.all()return render(request, 'myapp/article_list.html', {'articles': articles})
def article_detail(request, article_id):try:article = Article.objects.get(id=article_id)return render(request, 'myapp/article_detail.html', {'article': article})except Article.DoesNotExist:return HttpResponse("文章不存在")
4. 配置URL(主路由)
在myproject/urls.py中:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [path('admin/', admin.site.urls),path('', include('myapp.urls')), # 包含子应用的路由
]
注意:如果项目启动失败,检查setting.py里面的INSTALLED_APPS是否添加了你的子路由配置,若没有,就添加myapp.apps.MyappConfig。
五、子路由配置
1. 创建子应用路由文件
在myapp目录下创建urls.py:
from django.urls import path
from . import views
app_name = 'myapp'
urlpatterns = [path('', views.home, name='home'),path('articles/', views.article_list, name='article_list'),path('articles//', views.article_detail, name='article_detail'),
]
2. 路由参数说明
path('articles/<int:article_id>/', ...):捕获URL中的整数参数支持的类型:
str,int,slug,uuid,path若不需要传参,就直接path(访问的地址,具体的视图函数)
六、模板系统与静态文件
1. 创建模板目录结构
myapp/templates/myapp/base.htmlarticle_list.htmlarticle_detail.htmlstatic/myapp/css/style.cssjs/script.jsimages/
2. 基础模板 base.html
{% block title %}我的博客{% endblock %} {% load static %}{% block content %}{% endblock %} <script src="{% static 'myapp/js/script.js' %}"></script>
3. 文章列表模板 article_list.html
{% extends 'myapp/base.html' %}
{% block title %}文章列表 - 我的博客{% endblock %}
{% block content %}
文章列表
{% if articles %}{% for article in articles %}{{ article.title }}
{{ article.content|truncatewords:30 }}
{% endfor %}{% else %}暂无文章
{% endif %}
{% endblock %}
4. 静态文件配置
在settings.py中:
import os
# 静态文件配置
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'),
]
# 生产环境静态文件收集目录
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# 媒体文件配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
注意:除了子路由下的static静态资源文件夹不需要setting中配置,子路由中的其他文件夹以及全局中的其他文件夹都需要在setting里面配置
七、数据库迁移与管理员配置
1. 创建数据库迁移文件
python manage.py makemigrations
2. 执行数据库迁移
python manage.py migrate
3. 创建超级用户
python manage.py createsuperuser
4. 注册模型到管理员界面
在myapp/admin.py中:
from django.contrib import admin
from .models import Article
@admin.register(Article)
class ArticleAdmin(admin.ModelAdmin):list_display = ['title', 'created_at', 'updated_at']list_filter = ['created_at']search_fields = ['title', 'content']date_hierarchy = 'created_at'
八、完整的settings.py配置示例
import os
from pathlib import Path
BASE_DIR = Path(__file__).resolve().parent.parent
SECRET_KEY = 'your-secret-key-here'
DEBUG = True
ALLOWED_HOSTS = []
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','myapp', # 你的应用
]
MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'myproject.urls'
TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR, 'templates')],'APP_DIRS': True,'OPTIONS': {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],},},
]
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': BASE_DIR / 'db.sqlite3',}
}
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_TZ = True
九、常用命令总结
# 创建项目
django-admin startproject project_name
# 创建应用
python manage.py startapp app_name
# 数据库迁移
python manage.py makemigrations
python manage.py migrate
# 运行开发服务器
python manage.py runserver
# 创建超级用户
python manage.py createsuperuser
# 收集静态文件
python manage.py collectstatic