详细介绍Django开源框架的使用教程
YPE html>
《详细介绍Django开源框架的使用教程》
Django是一个基于Python的高级Web框架,遵循"快速开发"和"DRY(Don't Repeat Yourself)"原则,能够帮助开发者高效构建安全、可维护的Web应用。本教程将从环境搭建到高级功能,系统讲解Django的核心使用方法。
一、环境准备与项目初始化
1.1 安装Python与虚拟环境
Django需要Python 3.8+版本支持。建议使用虚拟环境隔离项目依赖:
python -m venv myenv
source myenv/bin/activate # Linux/Mac
myenv\Scripts\activate # Windows
1.2 安装Django
通过pip安装最新稳定版:
pip install django
验证安装:
python -m django --version
1.3 创建项目
使用django-admin命令生成项目结构:
django-admin startproject myproject
cd myproject
项目目录说明:
myproject/
├── manage.py # 命令行工具
└── myproject/ # 项目配置目录
├── __init__.py
├── settings.py # 全局配置
├── urls.py # 路由配置
└── wsgi.py # WSGI兼容配置
二、开发服务器与基础配置
2.1 启动开发服务器
python manage.py runserver
默认监听127.0.0.1:8000,可通过--settings指定配置文件:
python manage.py runserver 0.0.0.0:8000 --settings=myproject.settings
2.2 配置数据库
修改settings.py中的DATABASES配置,默认使用SQLite:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
如需使用MySQL/PostgreSQL,需安装对应驱动并修改配置。
2.3 创建应用
Django采用"项目-应用"结构,每个应用实现特定功能:
python manage.py startapp blog
应用目录包含models.py、views.py等核心文件,需在settings.py的INSTALLED_APPS中注册:
INSTALLED_APPS = [
...
'blog.apps.BlogConfig',
]
三、模型(Models)与数据库操作
3.1 定义模型
在blog/models.py中定义数据模型:
from django.db import models
class Post(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.2 生成迁移文件
python manage.py makemigrations
3.3 执行数据库迁移
python manage.py migrate
3.4 使用ORM操作数据
在views.py中通过模型类操作数据:
from django.shortcuts import render
from .models import Post
def post_list(request):
posts = Post.objects.all().order_by('-created_at')
return render(request, 'blog/post_list.html', {'posts': posts})
常用查询方法:
- filter(): 条件查询
- exclude(): 排除查询
- get(): 获取单个对象
- order_by(): 排序
四、视图(Views)与URL路由
4.1 视图类型
Django支持函数视图和类视图:
函数视图示例:
def post_detail(request, pk):
post = Post.objects.get(pk=pk)
return render(request, 'blog/post_detail.html', {'post': post})
类视图示例:
from django.views.generic import DetailView
class PostDetailView(DetailView):
model = Post
template_name = 'blog/post_detail.html'
4.2 URL路由配置
在blog/urls.py中定义应用级路由:
from django.urls import path
from . import views
app_name = 'blog'
urlpatterns = [
path('', views.post_list, name='post_list'),
path('post//', views.post_detail, name='post_detail'),
]
在项目级urls.py中包含应用路由:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('blog/', include('blog.urls')),
]
五、模板系统
5.1 模板目录结构
创建templates目录并配置settings.py:
TEMPLATES = [
{
'DIRS': [BASE_DIR / 'templates'],
...
}
]
5.2 基础模板语法
变量输出:
{{ post.title }}
标签使用:
{% if posts %}
{% for post in posts %}
{{ post.title }}
{% endfor %}
{% else %}
No posts available.
{% endif %}
5.3 模板继承
创建base.html基础模板:
{% block title %}My Blog{% endblock %}
{% block content %}{% endblock %}
子模板继承:
{% extends "base.html" %}
{% block title %}Post List{% endblock %}
{% block content %}
{% for post in posts %}
{{ post.title }}
{% endfor %}
{% endblock %}
六、表单处理
6.1 创建表单类
在blog/forms.py中定义表单:
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ['title', 'content']
6.2 视图处理
from django.shortcuts import redirect
from .forms import PostForm
def post_create(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
form.save()
return redirect('blog:post_list')
else:
form = PostForm()
return render(request, 'blog/post_form.html', {'form': form})
6.3 模板渲染
七、用户认证系统
7.1 内置认证视图
在urls.py中包含认证URL:
from django.contrib.auth import views as auth_views
urlpatterns = [
path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
7.2 自定义用户模型
创建自定义用户模型(需在项目初始化时设置):
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
phone_number = models.CharField(max_length=15)
# settings.py中配置
AUTH_USER_MODEL = 'accounts.CustomUser'
八、静态文件与媒体文件
8.1 配置静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = [BASE_DIR / 'static']
8.2 配置媒体文件(用户上传)
MEDIA_URL = '/media/'
MEDIA_ROOT = BASE_DIR / 'media'
8.3 开发环境配置
在urls.py中添加媒体文件服务(仅开发环境):
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
九、RESTful API开发
9.1 安装DRF
pip install djangorestframework
9.2 配置序列化器
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
9.3 创建API视图
from rest_framework import generics
from .models import Post
from .serializers import PostSerializer
class PostList(generics.ListCreateAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
class PostDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Post.objects.all()
serializer_class = PostSerializer
9.4 配置URL路由
from django.urls import path
from . import views
urlpatterns = [
path('api/posts/', views.PostList.as_view()),
path('api/posts//', views.PostDetail.as_view()),
]
十、部署与生产环境配置
10.1 生产环境设置
修改settings.py:
DEBUG = False
ALLOWED_HOSTS = ['yourdomain.com']
10.2 使用Gunicorn
pip install gunicorn
gunicorn myproject.wsgi:application --bind 0.0.0.0:8000
10.3 Nginx配置示例
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /static/ {
alias /path/to/your/staticfiles/;
}
}
关键词:Django框架、Python Web开发、MVT架构、ORM、模板引擎、表单处理、RESTful API、部署配置
简介:本文系统介绍Django框架的使用方法,涵盖环境搭建、模型定义、视图处理、模板系统、表单验证、用户认证、API开发及生产部署等核心内容,通过代码示例和配置说明帮助开发者快速掌握Django开发技能。