对于使用 Python 的 Django 框架进行 web 开发的程序员来说,以下几点是必须了解的。
环境配置与项目初始化
命令:
pip install django django-admin startproject myproject
解析:
-
使用 pip 安装 Django。
-
使用
django-admin startproject
初始化一个新的 Django 项目。
创建应用
命令:
cd myproject python manage.py startapp myapp
解析:
-
进入项目文件夹。
-
使用
python manage.py startapp
创建一个新的应用。
数据库迁移
命令:
python manage.py makemigrations python manage.py migrate
解析:
-
makemigrations
会创建新的迁移文件。 -
migrate
实际应用这些迁移到数据库。
启动开发服务器
命令:
python manage.py runserver
解析:
启动开发服务器,一般会在 8000 端口。
创建超级用户(用于后台管理)
命令:
python manage.py createsuperuser
解析:
创建一个新的超级用户,用于登录 Django 的 admin 后台。
Django模型(Models)
-
定义数据结构和数据库表映射。
代码示例:
class Book(models.Model): title = models.CharField(max_length=100) author = models.ForeignKey(Author, on_delete=models.CASCADE)
解析:
创建了一个名为 Book
的模型,包含字段 title
和 author
。
Django视图(Views)
-
处理用户请求和返回响应。
代码示例:
from django.http import HttpResponse def hello_world(request): return HttpResponse('Hello, world!')
解析:
创建了一个简单的视图,返回 "Hello, world!"。
Django模板(Templates)
-
用于动态生成 HTML 页面。
代码示例:
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ header }}</h1> </body> </html>
解析:
一个简单的模板,可以接收变量 title
和 header
以动态生成 HTML。
Django表单(Forms)
-
用于处理用户输入。
代码示例:
from django import forms class ContactForm(forms.Form): name = forms.CharField(max_length=100) email = forms.EmailField()
解析:
定义了一个名为 ContactForm
的表单,包含 name
和 email
字段。
Django Admin
-
用于创建后台管理界面。
代码示例:
from django.contrib import admin from .models import Book admin.site.register(Book)
解析:
在 admin 后台注册 Book
模型,这样就可以在后台进行 Book
数据的 CRUD 操作。
【提醒】这些只是 Django 框架中的一些核心概念和操作。对于更深入的了解,建议研究如何进行用户认证、使用中间件、缓存、信号(Signals)、创建 RESTful API 等高级主题。
用户认证
Django 自带了一个强大的用户认证系统。
命令:
python manage.py createsuperuser
解析:
这会创建一个可以访问 Django admin 界面的超级用户。
代码示例:
from django.contrib.auth.decorators import login_required @login_required def my_view(request): ...
解析:
使用 @login_required
装饰器来保护视图,只允许已登录用户访问。
使用中间件
中间件是处理请求和响应的钩子。
代码示例:
class SimpleMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): response = self.get_response(request) return response
解析:
这是一个非常基础的中间件示例,它什么都没做,只是简单地传递了请求和响应。
缓存
Django 支持多种缓存后端(例如,memcached、redis)。
代码示例:
from django.views.decorators.cache import cache_page @cache_page(60 * 15) def my_view(request): ...
解析:
@cache_page
装饰器会缓存视图的输出,参数是缓存的秒数(这里是15分钟)。
信号(Signals)
信号用于允许解耦的应用程序在某些事件发生时获得通知。
代码示例:
from django.db.models.signals import pre_save from django.dispatch import receiver from myapp.models import MyModel @receiver(pre_save, sender=MyModel) def my_callback(sender, **kwargs): ...
解析:
这里我们使用 pre_save
信号来在 MyModel
被保存之前执行 my_callback
函数。
创建 RESTful API
Django REST framework 是一个强大的库,用于快速构建 RESTful API。
命令:
pip install djangorestframework
代码示例:
from rest_framework import serializers, viewsets from myapp.models import MyModel class MyModelSerializer(serializers.ModelSerializer): class Meta: model = MyModel fields = '__all__' class MyModelViewSet(viewsets.ModelViewSet): queryset = MyModel.objects.all() serializer_class = MyModelSerializer
解析:
-
定义了一个名为
MyModelSerializer
的序列化器,用于将MyModel
的实例序列化为 JSON。 -
定义了一个名为
MyModelViewSet
的视图集,用于处理基础的 CRUD 操作。
以上仅为高级主题的基础介绍和简单示例,每一个主题都有很多深入和高级的用法。如果你对某一主题有更多的兴趣,我建议查阅 Django 的官方文档或相关教程进行深入学习。