▼点击下方卡片关注我
▲点击上方卡片关注我
好多小伙伴问我学 Python Web 开发该选啥框架,看到市面上 Flask、FastAPI、Django 这么多选择就头大。我可以明确地告诉你: Django 绝对是你的不二之选!它不光是个框架,简直就是个全能选手,从数据库操作到后台管理,一套组件全搞定。
Django 到底有多强?
说实话,我用过这么多 Web 框架,还真没见过比 Django 更全面的。它内置了 ORM、Admin 后台、Form 表单、用户认证,连安全防护都给你做好了。瞧瞧这段代码,创建一个用户模型有多简单:
1from django.db import models
2from django.contrib.auth.models import User
4class Profile(models.Model):
5user = models.OneToOneField(User, on_delete=models.CASCADE)
6nickname = models.CharField(max_length=50)
7avatar = models.ImageField(upload_to='avatars/')
8created_at = models.DateTimeField(auto_now_add=True)
⚠️ 小贴士:
- Django 的 Model 类继承自 models.Model
- on_delete=models.CASCADE 表示主表删除时从表也会删除
- 字段定义时记得设置合适的长度限制
MTV 架构,不是 MTV 音乐台
Django 用的是 MTV (Model-Template-View) 架构,跟大伙熟悉的 MVC 差不多,就是换了个马甲。看这个目录结构就明白了:
1myproject/
2├── manage.py
3└── myapp/
4├── models.py # 数据库模型
5├── views.py # 业务逻辑
6├── templates/ # HTML模板
7└── urls.py # URL路由配置
写个简单的视图函数,那叫一个简洁:
1from django.shortcuts import render
2from .models import Profile
4def user_profile(request):
5profiles = Profile.objects.all() # 获取所有用户资料
6return render(request, 'profiles.html', {'profiles': profiles})
ORM 真香警告
还在写原生 SQL?不存在的!Django ORM 能让你用 Python 代码操作数据库,不用写一行 SQL:
1# 创建用户资料
2Profile.objects.create(
3user=user,
4nickname='程序猫',
5avatar='cat.jpg'
6)
8# 查询所有昵称包含“猫”的用户
9cat_users = Profile.objects.filter(nickname__contains='猫')
11# 按创建时间排序
12latest_users = Profile.objects.order_by('-created_at')[:10]
⚠️ 小贴士:
- filter 返回的是 QuerySet,支持链式调用
- 双下划线(__)用于表示查询条件
- ORM 查询默认是惰性的,只有真正用到数据时才会查询数据库
Admin 后台管理系统
讲真,Django 的 Admin 后台简直就是开发者的救命稻草。几行代码就能生成一个功能完整的后台管理系统:
1from django.contrib import admin
2from .models import Profile
4@admin.register(Profile)
5class ProfileAdmin(admin.ModelAdmin):
6list_display = ['user', 'nickname', 'created_at']
7search_fields = ['nickname']
8list_filter = ['created_at']
表单处理和验证
处理表单数据?Django Form 来帮你:
1from django import forms
3class ProfileForm(forms.ModelForm):
4class Meta:
5model = Profile
6fields = ['nickname', 'avatar']
8def clean_nickname(self):
9nickname = self.cleaned_data['nickname']
10if len(nickname) < 3:
11raise forms.ValidationError(“昵称太短啦,最少要3个字符!”)
12return nickname
⚠️ 小贴士:
- Form 类的 clean_方法用于自定义字段验证
- ModelForm 可以自动根据模型生成表单字段
- 表单验证失败会自动收集错误信息
写了这么多年 Python,我是真觉得 Django 特别适合快速开发 Web 应用。它的生态系统特别成熟,啥功能都能找到现成的第三方包。想做博客?装个 django-blog-app。想加缓存?django-cache-machine 安排上。想做 API?django-rest-framework 分分钟搞定。
记住,选择 Django 不是因为它多么完美,而是因为它足够实用,能让你专注于业务逻辑的开发,而不是天天摆弄底层细节。这可能就是 Django 最大的魅力所在吧!
推 荐 阅 读
prettytable:表格输出神器,数据展示更美观!
Scikit-learn:开启你的Python机器学习之旅
PyQt:桌面应用开发神器,让你的GUI更出彩!
点赞分享
让钱和爱流向你