网站首页 > 教程文章 正文
为什么选择 Django?
Django = 高效 + 全能 + 开箱即用
内置功能 | 说明 |
ORM | 数据库操作更高效 |
Admin | 管理后台 1 分钟搭好 |
Auth | 登录认证/权限管理自动搞定 |
路由、表单、静态资源 | 通通内置 |
一句话:你能想到的,它基本都有!
学习本来就不是一蹴而就的事,不过只要你肯练、敢用,坚持,你一定能看到变化!
快速构建 Django 项目
pip3 install django
django-admin startproject mysite
cd mysite
python manage.py runserver
访问 http://127.0.0.1:8000,看到欢迎页
创建应用 & 路由注册
python manage.py startapp blog
注册到 settings.py > INSTALLED_APPS:
INSTALLED_APPS = [
'blog',
...
]
定义视图 blog/views.py:
from django.http import HttpResponse
def index(request):
return HttpResponse("抗战胜利80周年纪念活动十项安排")
配置路由 mysite/urls.py:
from blog import views
urlpatterns = [
path('', views.index),
]
模型设计 & 数据操作
blog/models.py:
from django.db import models
class Post(models.Model):
objects = None
title = models.CharField(max_length=100)
content = models.TextField()
created = models.DateTimeField(auto_now_add=True)
迁移表结构:
python manage.py makemigrations
python manage.py migrate
使用 ORM 写入数据:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :main.py
@Date :2025/6/29 20:20
@Author : malijie
"""
import os
import django
# 设置 Django 配置模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
django.setup()
# 注意:必须在 setup 之后再导入模型
from blog.models import Post
Post.objects.create(title="Hello Django", content="第一篇文章")
print(" 创建成功!")
查询所有:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :main.py
@Date :2025/6/29 20:20
@Author : malijie
"""
import os
import django
# 设置 Django 配置模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
django.setup()
# 注意:必须在 setup 之后再导入模型
from blog.models import Post
posts = Post.objects.all()
print(" 当前文章记录:")
for post in posts:
print(f"{post.id}: {post.title} - {post.content}")
管理后台:不用写前端,自动生成!
python manage.py createsuperuser
访问 /admin/,登录后自动管理文章!
如需展示模型:
# blog/admin.py
from .models import Post
admin.site.register(Post)
表单数据提交(简洁又强大)
定义表单:
from django import forms
class PostForm(forms.Form):
title = forms.CharField()
content = forms.CharField(widget=forms.Textarea)
在视图中接收 POST 表单:
from .forms import PostForm
def post_create(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
# 保存逻辑
print(form.cleaned_data)
else:
form = PostForm()
RESTful 接口(配合 Django REST Framework)
安装:
pip install djangorestframework
配置:
INSTALLED_APPS = [
'rest_framework',
...
]
定义序列化器:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :main.py
@Date :2025/6/29 20:20
@Author : malijie
"""
import os
import django
from rest_framework import serializers, viewsets
from rest_framework.routers import DefaultRouter
# 设置 Django 配置模块
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
django.setup()
# 注意:必须在 setup 之后再导入模型
from blog.models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = '__all__'
# 假设你有一个 Post 对象
post = Post.objects.first()
# 序列化这个对象
serializer = PostSerializer(post)
# 打印序列化后的数据
print(serializer.data)
定义接口:
from django.http import HttpResponse
from rest_framework import viewsets
from .models import Post
from .serializers import PostSerializer
def index(request):
return HttpResponse("抗战胜利80周年纪念活动十项安排")
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
路由注册(使用 router):
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :Fish
@File :urls.py
@Date :2025/6/30 20:25
@Author : malijie
"""
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import PostViewSet
router = DefaultRouter()
router = DefaultRouter()
router.register(r'posts', PostViewSet)
urlpatterns = [
path('', include(router.urls)),
]
访问
http://127.0.0.1:8000/posts/,接口搞定!
开发必备技巧
功能 | 示例代码 |
获取 GET 参数 | request.GET.get("id") |
获取 POST 参数 | request.POST.get("title") |
返回 JSON 响应 | return JsonResponse({...}) |
上传文件处理 | request.FILES['file'] |
登录验证 | @login_required |
设置 Cookie | response.set_cookie(...) |
Session 使用 | request.session['uid'] = 1 |
实际场景应用
自动化测试平台
管理后台系统
多人博客系统
数据可视化平台(配合 matplotlib、echarts)
结合前端框架做 API 后端(React、Vue)
总结一句话
Django 是 Python 后端开发的王炸级别框架,功能全,生态大,能快能稳能跑通上线。
从个人项目到企业系统,它都能轻松胜任!
下期预告:
《每天一个 Python 库:FastAPI 异步接口超丝滑,效率爆表!》
如果你觉得有用,点赞关注不迷路,后续更新更多自动化测试经验,我们一起成长!欢迎评论区留言!
猜你喜欢
- 2025-07-06 一个可以用来练手的C++开源编译器!
- 2025-07-06 Linux开发工具使用指南(linux软件开发工具)
- 2025-07-06 Linux下Makefile文件的模式规则和自动化变量
- 2025-07-06 程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统
- 2025-07-06 postgresql自定义函数实现,通过contrib模块进行扩展
- 2025-07-06 Linux GCC编译及Makefile使用(gcc makefile编写)
- 2025-07-06 wordpress独立站上线两周没收录?原来是robots.txt搞的鬼…
- 2025-07-06 make sure用法解析(make sure sth)
- 2025-07-06 Makefile实践(makefile经典教程)
- 2025-07-06 向Makefile传参数(makefile 命令行参数)
- 最近发表
-
- 一个可以用来练手的C++开源编译器!
- Linux开发工具使用指南(linux软件开发工具)
- Linux下Makefile文件的模式规则和自动化变量
- 程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统
- postgresql自定义函数实现,通过contrib模块进行扩展
- Linux GCC编译及Makefile使用(gcc makefile编写)
- wordpress独立站上线两周没收录?原来是robots.txt搞的鬼…
- make sure用法解析(make sure sth)
- 每天一个 Python 库:Django全能Web框架,一站式后台开发
- Makefile实践(makefile经典教程)
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)