谢田波
谢田波
Published on 2024-12-19 / 17 Visits
0
0

Django:Web 开发

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)

小贴士

    1. Django 的 Model 类继承自 models.Model
  1. 2. on_delete=models.CASCADE 表示关联对象删除时,依赖对象也会被删除。
    1. 字段长度限制(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. 1. filter 返回的是 QuerySet,支持链式调用。
    1. 双下划线(__)用来表示查询条件,比如 contains 表示“包含”。
    1. 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

小贴士

  1. clean_ 方法可以自定义字段验证规则。
  2. ModelForm 会根据模型自动生成对应的表单字段。
  3. 验证失败时,错误信息会自动收集并显示,开发体验简直不要太爽

生态系统:成熟且强大

Django 的生态圈超级成熟,几乎你想到的功能都能找到现成的解决方案:

  • • 做博客? 装个 django-blog-app
  • • 加缓存? 用 django-cache-machine
  • • 开发 API? django-rest-framework(简称 DRF)直接安排。

总之,只要你敢想,Django 就能帮你实现。

为什么选 Django?

选择 Django 不是因为它完美,而是因为它实用。它帮你把底层细节全都处理好了,让你能专注于业务逻辑的开发。这种开发效率,真的很难不爱。


Comment