Django:Web 开发的全能选手!
最近不少小伙伴问我,学 Python Web 开发到底选啥框架?看到市面上 Flask、FastAPI、Django 一大堆选择,直接懵圈。我直接告诉你:Django 是你的不二之选! 为什么?因为 Django 不只是个框架,它简直就是 Web 开发的全能选手!从数据库操作到后台管理,从表单验证到安全防护,全都给你安排得明明白白。
Django 有多强?
说实话,用过这么多 Web 框架,还真没见过比 Django 更全面的。它自带了一整套工具箱:ORM、Admin 后台、Form 表单、用户认证,甚至连安全防护(比如防 CSRF、SQL 注入)都直接给你做好了。
随便来段代码,你就知道它有多贴心。比如,创建一个用户模型,超级简单:
from django.db import models
from django.contrib.auth.models
import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
nickname = models.CharField(max_length=50)
avatar = models.ImageField(upload_to='avatars/')
created_at = models.DateTimeField(auto_now_add=True)
小贴士:
-
- Django 的 Model 类继承自
models.Model
。
- Django 的 Model 类继承自
- 2.
on_delete=models.CASCADE
表示关联对象删除时,依赖对象也会被删除。 -
- 字段长度限制(
max_length
)要根据实际需求设置。
- 字段长度限制(
MTV 架构:逻辑清晰,开发轻松
Django 使用的是 MTV (Model-Template-View) 架构,看起来和 MVC 差不多,但组织方式更贴合实际开发需求。
目录结构一目了然:
myproject/
├── manage.py
└── myapp/
├── models.py # 数据库模型
├── views.py # 业务逻辑
├── templates/ # HTML 模板
└── urls.py # URL 路由配置
比如,你想实现一个展示用户资料的功能,只需要几行代码:
from django.shortcuts import render
from .models import Profile
def user_profile(request):
profiles = Profile.objects.all() # 获取所有用户资料
return render(request, 'profiles.html', {'profiles': profiles})
是不是特别清爽?没错,这就是 Django 的魅力。
ORM:解放你的双手
你还在写原生 SQL?别逗了!Django 的 ORM 让你用 Python 操作数据库,根本不需要碰 SQL:
# 创建用户资料
Profile.objects.create(
user=user,
nickname='程序猫',
avatar='cat.jpg' )
# 查询所有昵称包含“猫”的用户
cat_users = Profile.objects.filter(nickname__contains='猫')
# 获取最新的 10 条用户资料
latest_users = Profile.objects.order_by('-created_at')[:10]
小贴士:
- 1.
filter
返回的是 QuerySet,支持链式调用。 -
- 双下划线(
__
)用来表示查询条件,比如contains
表示“包含”。
- 双下划线(
-
- ORM 查询是惰性的,只有真正用到数据时才会执行查询。
Admin 后台:开发者的福音
说到 Django 的 Admin 后台,真的必须吹爆!几乎是零配置,就能生成一个功能完善的后台管理系统:
from django.contrib import admin
from .models import Profile
@admin.register(Profile)
class ProfileAdmin(admin.ModelAdmin):
list_display = ['user', 'nickname', 'created_at']
search_fields = ['nickname']
list_filter = ['created_at']
打开后台页面,增删改查全都有,简直像开挂一样。
表单处理和验证:一气呵成
表单验证还在手写逻辑?别累着自己了,Django 的 Form 帮你搞定一切:
from django import forms
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['nickname', 'avatar']
def clean_nickname(self):
nickname = self.cleaned_data['nickname']
if len(nickname) < 3:
raise forms.ValidationError("昵称太短啦,最少要 3 个字符!")
return nickname
小贴士:
clean_
方法可以自定义字段验证规则。ModelForm
会根据模型自动生成对应的表单字段。- 验证失败时,错误信息会自动收集并显示,开发体验简直不要太爽
生态系统:成熟且强大
Django 的生态圈超级成熟,几乎你想到的功能都能找到现成的解决方案:
- • 做博客? 装个
django-blog-app
。 - • 加缓存? 用
django-cache-machine
。 - • 开发 API?
django-rest-framework
(简称 DRF)直接安排。
总之,只要你敢想,Django 就能帮你实现。
为什么选 Django?
选择 Django 不是因为它完美,而是因为它实用。它帮你把底层细节全都处理好了,让你能专注于业务逻辑的开发。这种开发效率,真的很难不爱。