对于使用 Python 的 Django 框架进行 web 开发的程序员来说,以下几点是必须了解的。
pip install django
django-admin startproject myproject
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 后台。
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
创建了一个名为 Book
的模型,包含字段 title
和 author
。
from django.http import HttpResponse
def hello_world(request):
return HttpResponse('Hello, world!')
创建了一个简单的视图,返回 “Hello, world!”。
DOCTYPE html>
<html>
<head>
<title>{{ title }}title>
head>
<body>
<h1>{{ header }}h1>
body>
html>
一个简单的模板,可以接收变量 title
和 header
以动态生成 HTML。
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(max_length=100)
email = forms.EmailField()
定义了一个名为 ContactForm
的表单,包含 name
和 email
字段。
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分钟)。
信号用于允许解耦的应用程序在某些事件发生时获得通知。
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
函数。
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 的官方文档或相关教程进行深入学习。