Django 入门
根据您对 Django 的熟悉程度,您可以 尝试教程,或直接 深入了解文档。
想要了解有关 Django 的更多信息?阅读概述,了解 Django 是否适合您的项目。
Django 概述编写您的第一个 Django 应用
已经安装了 Django?很好。现在 尝试此教程,它将指导您创建基本的投票应用程序。它分为两部分
- 允许人们查看投票并参与投票的公共网站。
- 允许您添加、更改和删除投票的管理界面。
Django 简介
-
对象关系映射器
完全使用 Python 定义您的数据模型。您可以免费获得丰富、动态的数据库访问 API — 但您仍然可以在需要时编写 SQL。
了解更多信息from django.db import models class Band(models.Model): """A model of a rock band.""" name = models.CharField(max_length=200) can_rock = models.BooleanField(default=True) class Member(models.Model): """A model of a rock band member.""" name = models.CharField("Member's name", max_length=200) instrument = models.CharField( choices=( ("g", "Guitar"), ("b", "Bass"), ("d", "Drums"), ), max_length=1, ) band = models.ForeignKey("Band")
-
URL 和视图
干净、优雅的 URL 方案是高质量 Web 应用程序中的一个重要细节。Django 鼓励设计美观的 URL,并且不会在 URL 中放置任何无用信息,例如 .php 或 .asp。
要为应用程序设计 URL,您需要创建一个名为 URLconf 的 Python 模块。它就像应用程序的内容目录,其中包含 URL 模式和视图之间的简单映射。
了解更多信息from django.urls import path from . import views urlpatterns = [ path("bands/", views.band_listing, name="band-list"), path("bands/<int:band_id>/", views.band_detail, name="band-detail"), path("bands/search/", views.band_search, name="band-search"), ]
from bands.models import Band from django.shortcuts import render def band_listing(request): """A view of all bands.""" bands = Band.objects.all() return render(request, "bands/band_listing.html", {"bands": bands})
-
模板
Django 的模板语言旨在平衡功能和易用性。它旨在让习惯使用 HTML 的人(例如设计师和前端开发人员)感到舒适且易于学习。但它也很灵活且具有很高的可扩展性,允许开发人员根据需要扩展模板语言。
了解更多信息<html> <head> <title>Band Listing</title> </head> <body> <h1>All Bands</h1> <ul> {% for band in bands %} <li> <h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2> {% if band.can_rock %}<p>This band can rock!</p>{% endif %} </li> {% endfor %} </ul> </body> </html>
-
表单
Django 提供了一个强大的表单库,用于将表单呈现为 HTML、验证用户提交的数据,并将该数据转换为本机 Python 类型。Django 还提供了一种从现有模型生成表单并使用这些表单创建和更新数据的方法。
了解更多信息from django import forms class BandContactForm(forms.Form): subject = forms.CharField(max_length=100) message = forms.TextField() sender = forms.EmailField() cc_myself = forms.BooleanField(required=False)
-
身份验证
Django 带有一个功能齐全且安全的身份验证系统。它处理用户帐户、组、权限和基于 cookie 的用户会话。这使您可以轻松构建允许用户创建帐户并安全地登录/注销的网站。
了解更多信息from django.contrib.auth.decorators import login_required from django.shortcuts import render @login_required def my_protected_view(request): """A view that can only be accessed by logged-in users""" return render(request, "protected.html", {"current_user": request.user})
-
管理
Django 最强大的部分之一是其自动管理界面。它读取模型中的元数据,以提供一个功能强大且适合生产环境的界面,内容制作者可以使用该界面立即开始管理网站上的内容。它易于设置,并提供了许多用于自定义的挂钩。
了解更多信息from bands.models import Band, Member from django.contrib import admin class MemberAdmin(admin.ModelAdmin): """Customize the look of the auto-generated admin for the Member model""" list_display = ("name", "instrument") list_filter = ("band",) admin.site.register(Band) # Use the default options admin.site.register(Member, MemberAdmin) # Use the customized options
-
国际化
Django 完全支持将文本翻译成不同的语言,以及特定于语言环境的日期、时间、数字和时区格式。它允许开发人员和模板作者指定应用程序的哪些部分应该针对本地语言和文化进行翻译或格式化,并且它使用这些挂钩根据用户的偏好为特定用户本地化 Web 应用程序。
了解更多信息from django.shortcuts import render from django.utils.translation import gettext def homepage(request): """ Shows the homepage with a welcome message that is translated in the user's language. """ message = gettext("Welcome to our site!") return render(request, "homepage.html", {"message": message})
{% load i18n %} <html> <head> <title>{% trans 'Homepage - Hall of Fame' %}</title> </head> <body> {# Translated in the view: #} <h1>{{ message }}</h1> <p> {% blocktrans count member_count=bands.count %} Here is the only band in the hall of fame: {% plural %} Here are all the {{ member_count }} bands in the hall of fame: {% endblocktrans %} </p> <ul> {% for band in bands %} <li> <h2><a href="{{ band.get_absolute_url }}">{{ band.name }}</a></h2> {% if band.can_rock %}<p>{% trans 'This band can rock!' %}</p>{% endif %} </li> {% endfor %} </ul> </body> </html>
-
安全性