Django,一个全栈开发者的 Python 终极武器!

文摘   2024-11-03 09:27   广东  

▼点击下方卡片关注我


▲点击上方卡片关注我

好多小伙伴问我学 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):
5 user = models.OneToOneField(User, on_delete=models.CASCADE)
6 nickname = models.CharField(max_length=50)
7 avatar = models.ImageField(upload_to='avatars/')
8 created_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):
5 profiles = Profile.objects.all() # 获取所有用户资料
6 return render(request, 'profiles.html', {'profiles': profiles})

ORM 真香警告

还在写原生 SQL?不存在的!Django ORM 能让你用 Python 代码操作数据库,不用写一行 SQL: 


1# 创建用户资料
2Profile.objects.create(
3 user=user,
4 nickname='程序猫',
5 avatar='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):
6 list_display = ['user', 'nickname', 'created_at']
7 search_fields = ['nickname']
8 list_filter = ['created_at']

表单处理和验证

处理表单数据?Django Form 来帮你: 


1from django import forms
3class ProfileForm(forms.ModelForm):
4 class Meta:
5 model = Profile
6 fields = ['nickname', 'avatar']
8 def clean_nickname(self):
9 nickname = self.cleaned_data['nickname']
10 if len(nickname) < 3:
11 raise forms.ValidationError(“昵称太短啦,最少要3个字符!”)
12 return 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更出彩!

点赞分享

让钱和爱流向你

第二世界的趣事
“在‘精神世界的趣事’中,我们一同探索心灵深处的奥秘。每一篇文章都是一次心灵的旅行,带你发现自我,理解他人,享受不一样的精神的盛宴。
 最新文章