Meet DjangoDjango is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source. Show Django was designed to help developers take applications from concept to completion as quickly as possible. Reassuringly secure.Django takes security seriously and helps developers avoid many common security mistakes. Exceedingly scalable.Some of the busiest sites on the web leverage Django’s ability to quickly and flexibly scale. Learn more about Django Stay in the loopSubscribe to one of our mailing lists to stay up to date with everything in the Django community: We have a few other specialized lists (announce, i18n, ...). You can find more information about them in our mailing list documentation. Back to Top
你所需要知道的关于 Django 的一切。 这份文档是如何组织的¶Django 有丰富的文档。一份高度概述的文档会告诉你在哪里找到特定的东西:
性能和优化¶有各种各样的技术和工具,可以帮助你的代码的运行更高效,更快和使用更少的系统资源.
地理框架¶GeoDjango 旨在成为一个世界级的地理网络框架。它的目标是使建立 GIS 网页应用尽可能容易,并利用空间数据的力量。 Back to Top 附加信息让我们通过示例来学习。 通过这个教程,我们将带着你创建一个基本的投票应用程序。 它将由两部分组成:
我们假定你已经阅读了 安装 Django。你能知道 Django 已被安装,且安装的是哪个版本,通过在命令提示行输入命令(由 $ 前缀)。 / $ python -m django --version
...\> py -m django --version
如果这行命令输出了一个版本号,证明你已经安装了此版本的 Django;如果你得到的是一个“No module named django”的错误提示,则表明你还未安装。 本教程是为Django 4.1 编写的,它支持 Python 3.8 及以后的版本。如果 Django 版本不匹配,你可以通过本页右下角的版本切换器改到你的 Django 版本的教程,或者将 Django 更新到最新的版本。如果你使用的是旧版本的 Python,请查看 我应该使用哪个版本的 Python 来配合 Django? 来查找兼容的 Django 版本。 你可以查看文档 如何安装 Django 来获得关于移除旧版本,安装新版本的流程和建议。 从哪里获得帮助: 如果你在阅读本教程的过程中有任何疑问,可以前往 FAQ 的 获取帮助 的版块。 创建项目¶如果这是你第一次使用 Django 的话,你需要一些初始化设置。也就是说,你需要用一些自动生成的代码配置一个 Django project —— 即一个 Django 项目实例需要的设置项集合,包括数据库配置、Django 配置和应用程序配置。 打开命令行, / $ django-admin startproject mysite
...\> django-admin startproject mysite
这行代码将会在当前目录下创建一个
备注 你得避免使用 Python 或 Django 的内部保留字来命名你的项目。具体地说,你得避免使用像 我的代码该放在哪? 如果你的背景是普通的老式 PHP(没有使用过现代框架),你可能习惯于把代码放在网络服务器的文档根目录下(比如 把你的代码放在文档根目录 以外 的某些地方吧,比如 /home/mycode。 让我们看看 mysite/ manage.py mysite/ __init__.py settings.py urls.py asgi.py wsgi.py 这些目录和文件的用处是:
用于开发的简易服务器¶让我们来确认一下你的 Django 项目是否真的创建成功了。如果你的当前目录不是外层的 / $ python manage.py runserver
...\> py manage.py runserver
你应该会看到如下输出: Performing system checks... System check identified no issues (0 silenced). You have unapplied migrations; your app may not work properly until they are applied. Run 'python manage.py migrate' to apply them. 十一月 08, 2022 - 15:50:53 Django version 4.1, using settings 'mysite.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. 备注 忽略有关未应用最新数据库迁移的警告,稍后我们处理数据库。 你已经启动了 Django 开发服务器,这是一个用纯 Python 编写的轻量级网络服务器。我们在 Django 中包含了这个服务器,所以你可以快速开发,而不需要处理配置生产服务器的问题 -- 比如 Apache -- 直到你准备好用于生产。 现在是个提醒你的好时机:千万不要 将这个服务器用于和生产环境相关的任何地方。这个服务器只是为了开发而设计的。(我们在网络框架方面是专家,在网络服务器方面并不是。) 服务器现在正在运行,通过浏览器访问 http://127.0.0.1:8000/ 。你将看到一个“祝贺”页面,有一只火箭正在发射。你成功了! 更换端口 默认情况下, 如果你想更换服务器的监听端口,请使用命令行参数。举个例子,下面的命令会使服务器监听 8080 端口: / $ python manage.py runserver 8080 ...\> py manage.py runserver 8080
如果你想要修改服务器监听的IP,在端口之前输入新的。比如,为了监听所有服务器的公开IP(这你运行 Vagrant 或想要向网络上的其它电脑展示你的成果时很有用),使用: / $ python manage.py runserver 0.0.0.0:8000 ...\> py manage.py runserver 0.0.0.0:8000
Full docs for the development server can be found in the 会自动重新加载的服务器 用于开发的服务器在需要的情况下会对每一次的访问请求重新载入一遍 Python 代码。所以你不需要为了让修改的代码生效而频繁的重新启动服务器。然而,一些动作,比如添加新文件,将不会触发自动重新加载,这时你得自己手动重启服务器。 创建投票应用¶现在你的开发环境——这个“项目” ——已经配置好了,你可以开始干活了。 在 Django 中,每一个应用都是一个 Python 包,并且遵循着相同的约定。Django 自带一个工具,可以帮你生成应用的基础目录结构,这样你就能专心写代码,而不是创建目录了。 项目 VS 应用 项目和应用有什么区别?应用是一个专门做某件事的网络应用程序——比如博客系统,或者公共记录的数据库,或者小型的投票程序。项目则是一个网站使用的配置和应用的集合。项目可以包含很多个应用。应用可以被很多个项目使用。 你的应用可以存放在任何
Python 路径 中定义的路径。在这个教程中,我们将在你的 请确定你现在处于 / $ python manage.py startapp polls
...\> py manage.py startapp polls
这将会创建一个
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py 这个目录结构包括了投票应用的全部内容。 编写第一个视图¶让我们开始编写第一个视图吧。打开
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.") 这是 Django 中最简单的视图。如果想看见效果,我们需要将一个 URL 映射到它——这就是我们需要 URLconf 的原因了。 为了创建 URLconf,请在 polls 目录里新建一个 polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py urls.py views.py 在
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ] 下一步是要在根 URLconf 文件中指定我们创建的
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ] 函数 我们设计 何时使用 当包括其它 URL 模式时你应该总是使用 你现在把 / $ python manage.py runserver
...\> py manage.py runserver
用你的浏览器访问 http://localhost:8000/polls/,你应该能够看见 "Hello, world. You're at the polls index." ,这是你在 没有找到页面? 如果你在这里得到了一个错误页面,检查一下你是不是正访问着http://localhost:8000/polls/ 而不应该是 http://localhost:8000/。 函数 path() 参数: route¶
这些准则不会匹配 GET 和 POST 参数或域名。例如,URLconf 在处理请求 path() 参数: view¶当 Django 找到了一个匹配的准则,就会调用这个特定的视图函数,并传入一个 path() 参数: kwargs¶任意个关键字参数可以作为一个字典传递给目标视图函数。本教程中不会使用这一特性。 path() 参数: name¶为你的 URL 取名能使你在 Django 的任意地方唯一地引用它,尤其是在模板中。这个有用的特性允许你只改一个文件就能全局地修改某个 URL 模式。 当你了解了基本的请求和响应流程后,请阅读 教程的第 2 部分 开始使用数据库. |