Django官网入门文档翻译摘录

最近重新读了一下文档,记录一些我觉得重要的点,之后能在较短时间把握大致框架

目录

搭建环境

第一节

第二节

创建一个管理员账号¶

启动开发服务器¶

第三节

第四节

第五节

第六节

第七节


搭建环境

Django:1.11

Python环境与Django版本对应表:

Django version

Python versions

1.8

2.7, 3.2 (until the end of 2016), 3.3, 3.4, 3.5

1.9, 1.10

2.7, 3.4, 3.5

1.11

2.7, 3.4, 3.5, 3.6

2.0

3.4, 3.5, 3.6

2.1

3.5, 3.6, 3.7

选择py3.6,在anaconda中创建虚拟环境

Anaconda默认的django版本为2.5

尝试安装对应版本django

cd D:\anacondaProject\project3

conda install Django==1.11.8 #安装django

anaconda中没有1.11.4只有1.11.8

python

>>> import django

>>> print(django.get_version())

在setting.py中修改数据库配置,创建对应数据库

pymysql

删除迁移文件(migrations文件夹下的所有)

生成数据库迁移文件

python manage.py makemigrations

执行迁移

python manage.py migrate

启动服务

python manage.py runserver

打开网页

http://127.0.0.1:8000/verifycodefile/

 

报错:

ModuleNotFoundError: No module named 'PIL'

因为需要pillow模块

pip install Pillow

查看官网教程:

第一节

https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial01/

其中介绍要点:

1.你刚刚启动的是Django自带的用于开发的简易服务器,它是一个用纯Python写的轻量级的Web服务器。我们将这个服务器内置在Django中是为了让你能快速的开发出想要的东西,因为你不需要进行配置生产等级的服务器(例如Apache)方面的工作,除非你已经准备好引入生产环境了。

 

现在是一个提醒你的好时机:千万不要将这个服务器用作和生产环境相关的任何地方。这个服务器只是为了开发而设计的。(我们在Web框架方面是专家,在Web服务器方面并不是。)

修改代码会自动重新加载的服务器,添加文件不会

你的应用可以存放在任何Python的路径中定义的路径。在这个教程中,将我们在你的manage.py同级目录下创建投票应用。这样它就可以作为顶级模块导入,不是而mysite的子模块。

请确定你现在位于其中manage.py的目录下,然后运行这行命令来创建一个应用:

$ python manage.py startapp polls

2. mysite/urls.py文件中可以通过include引入其他app模块的url conf

第二节

https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial02/

介绍model对应数据表:

定义某些Field 类实例需要参数。例如CharField 需要一个max_length 参数。这个参数的用处不止于使用定义的数据库结构,也用于验证数据,我们以后将会看到这方面的内容。

为了在我们的工程中包含这个应用,需要我们在配置类INSTALLED_APPS中添加设置。因为PollsConfig类写在文件polls/apps.py中,所以它的点式路径是'polls.apps.PollsConfig',文件在mysite/settings.py中INSTALLED_APPS子项添加点式路径

现在你的 Django 项目会包含 polls 应用。接着运行下面的命令:

$ python manage.py makemigrations polls

你将会看到类似于下面这样的输出:

Migrations for 'polls':

  polls/migrations/0001_initial.py:

    - Create model Choice

    - Create model Question

    - Add field question to choice

通过运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次 迁移

默认的,Django会在外键分区名后追加字符串"_id"。(同样,这也可以自定义。)

迁移是非常强大的功能,它可以使您在开发过程中持续的改变数据库结构而不需要重新删除和创建表-它专注于使数据库平滑升级而不会丢失数据。深入的学习这部分内容,现在,你只需要记住,改变模型需要这三步:

  • 编辑models.py文件,改变模型。
  • 运行 为模型的改变生成迁移文件。python manage.py makemigrations
  • 运行 来应用数据库迁移。python manage.py migrate

创建一个管理员账号

首先,我们得创建一个能登录管理页面的用户。请运行下面的命令:

/  

$ python manage.py createsuperuser

键入你想要使用的用户名,然后点击回车键:

Username: admin

然后提示你输入想要使用的邮件地址:

Email address: [email protected]

最后一步是输入密码。你会被要求输入两次密码,第二次的目的是为了确认第一次输入的确实是你想要的密码。

Password: **********p@ssw0rd
Password (again): *********
Superuser created successfully.

启动开发服务器

Django的管理界面默认就是启用的。让我们启动开发服务器,看看它到底是什么样的。

如果开发服务器未启动,用以下命令启动它:

$
activate django_test
cd /d D:\anacondaProject\project3
python manage.py runserver
 

现在,打开浏览器,转到您本地域名的“ / admin /”目录,-例如“ http://127.0.0.1:8000/admin/ ”。您应该会看到管理员登录界面

需要告诉管理员Question对象具有管理界面。为此,请打开polls/admin.py文件,然后

from django.contrib import admin

 

from .models import Question

 

admin.site.register(Question)

第三节

https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial03/

把这些新视图添加进polls.urls 模块里,只要添加url() 几个函数调用就行:

民调/urls.py 

from django.urls import path
 
from . import views
 
urlpatterns = [
    # ex: /polls/
    path('', views.index, name='index'),
    # ex: /polls/5/
    path('/', views.detail, name='detail'),
    # ex: /polls/5/results/
    path('/results/', views.results, name='results'),
    # ex: /polls/5/vote/
    path('/vote/', views.vote, name='vote'),
]

然后看看你的浏览器,如果你转到“ / polls / 34 /”Django将会运行detail()方法并展示你在URL里提供的问题ID。再试试“ / polls / 34 / vote /”“ / polls / 34 / vote /“-你将会看到暂时使用占位的结果和投票页。

当某人请求您网站的某个页面时-有时说,“ / polls / 34 /”Django将会加载mysite.urls模块,因为这在配置项ROOT_URLCONF中设置了。然后Django寻找命名urlpatterns变量和按序匹配正则表达式在找到匹配项。'polls/',它切掉了匹配的文本("polls/"),将剩余文本"34/"。,发送至'polls.urls' URL配置做进一步处理在这里剩余文本匹配了'/

question_id=34匹配生成。使用尖括号捕获这部分URL,并以关键字参数的形式发送给视图函数。上述字符串的:question_id>部分定义了将被用作区分匹配模式的变量名,而int:则是一个转换器决定了应该以什么变量类型匹配这部分的URL路径。

第四节

表单处理https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial04/

当编写一个Django应用时,你应该先评估一下通用视图是否可以解决你的问题,你应该在一开始使用它,而不是进行到一半时插入代码。

path('/', views.DetailView.as_view(), name='detail'),

字符串路径中匹配模式的名称已经由对划线

我们在这里使用两个通用视图:ListViewDetailView。这两个视图分别抽象显示一个对象列表显示一个特定类型对象的详细信息页面这两种概念。

第五节

测试https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial05/

以下是自动化测试的运行过程:

  • python manage.py test polls 将会寻找 polls 应用里的测试代码
  • 它找到了 django.test.TestCase 的一个子类
  • 它创建一个特殊的数据库供测试使用
  • 它在类中寻找测试方法——以 test 开头的方法。
  • 在 test_was_published_recently_with_future_question 方法中,它创建了一个 pub_date 值为 30 天后的 Question 实例。
  • 接着使用 assertls() 方法,发现 was_published_recently() 返回了 True,而我们期望它返回 False

第六节

样式和图片

在static您刚创建的目录中,创建另一个目录polls,在其中创建一个名为的文件style.css。换句话说,您的样式表应位于polls/static/polls/style.css。由于AppDirectoriesFinderstaticfile finder的工作方式,您可以在Django中将该静态文件称为polls/style.css,类似于引用模板路径的方式。

下一步,在polls/templates/polls/index.html的文件头添加以下内容:

民调/模板/调查/ index.html

{% load static %}
 
<link rel="stylesheet" type="text/css" href="{% static 'polls/style.css' %}">

{% static %} 模板标签会生成静态文件的绝对路径。

第七节

后台https://docs.djangoproject.com/zh-hans/3.0/intro/tutorial07/

Admin.py

from django.contrib import admin

from .models import Choice, Question

admin.site.register(Choice)

在这个表单中,"Question" 字段是一个包含数据库中所有投票的选择框。Django 知道要将 ForeignKey 在后台中以选择框