Django快速入门

jk 1年前 ⋅ 1174 阅读

源于:今日头条(查看原文)

(此处已添加圈子卡片,请到今日头条客户端查看)

预备知识

Python 基础,HTML,CSS 以及 Unix 命令行。如果你已经掌握了这些,学习本课程会很轻松。

介绍

这不是一个教程。这个快速入门课是一个快速制作基本的 Django 网站的方法,而无需深入了解制作网站应用程序的基本概念。对于快速入门课的每一步,我都会对正在使用的工具和概念添加一个解释更全面的链接,以便于你在创建你的第一个项目时更好的理解 Django。

我们的目标

我们要制作一个网站,你可以用来上传带有标题、日期和描述的图像。很简单的。

何为 Django?

Django(/JANG-oh/),一个以帮助人们快速创建简洁稳定的网站而广为人知的工具(Web 框架)。

使用 Django 遵循以下几种模式:

1. 模型(Model),如何存储数据。我们会告诉 Django 在这里存储我们的图像,标题,数据和描述。

2. 视图(View),项目中在哪里处理数据。我们的网站在这里为用户处理取自模型的数据。

3. 模板(Template),项目如何呈现它所处理的数据。视图会使用模板来展示基于我们的模型处理的数据。

Django 做了很多复杂(且很有趣)的事情,但是如果你是刚开始接触,那么了解这些内容就足够了。

 

安装配置我们的项目

Windows用户请注意!

默认情况下,Windows 没有 Unix 命令行,而 Unix 命令行是本速成课的先决条件。Windows 10 在 2018 年 10 月更新的版本中提供了 Linux 子系统(Ununtu)。请安装并设置 Linux 子系统以使用 Unix 命令行。

我们将使用你计算机的终端来安装 python 环境和 Django。我们先输入以下命令,在计算机的 Documents 文件夹创建项目:

Django快速入门

 

python3 -m venv django_cc 会使用名为 django_cc 文件夹为我们的项目创建一个虚拟环境,因此我们为其安装的所有内容都不会干扰系统中的其他任何内容。

 
正版 Django企业开发实战 高效Python Web框架指南 python基础教程入门到实践 语言程序设计书籍爬虫技巧核心编程
 
¥66.5
 
购买

之后我们进入项目文件夹,激活 python 环境并安装 Django。

Django快速入门

 

  • source bin/activate 会激活我们创建的虚拟环境。这意味着如果我们安装 Django 的话,只会在我们项目中安装,而不会安装到整个系统环境中。
  • pip install django 会使用 Python 的包管理器安装最新版本的 Django。

现在已经安装好了 Django,并且我们得到了一些新的命令。现在我们首先使用 Django 创建一个项目,迁移开发数据库,最后尝试首次启动本地开发服务器,并确保每一步都正确执行。

Django快速入门

 

  • django-admin startproject django_cc 告知 Django 制作我们项目的框架,并且准备接入其他东西(即 django 应用)
  • 这也是我找到manage.py的地方,我们使用manage.py跟Django进行交互
  • python3 manage.py migrate 用于告知 Django 我们的模型已经发生改变。由于我们的项目刚刚开始,这将是我们的初始迁移操作,建立了 Django 自有的各种模型(即,账户,活动日志,权限等)。更多...
  • python3 manage.py runserver 用于启动我们的开发服务器,并用于测试。

要查看正在运行的开发服务器,在浏览器打开 127.0.0.1:8000,可以看到 Django 的启动页。

Django快速入门

 

数据库

接下来选择你最喜欢的文本编辑器或 python IDE,然后开始深入研究 Django。我们首先创建一个 Django 应用程序,并在此为项目编写所有模型。

Django快速入门

 

为了让我们的核心项目能识别到这个应用,我们需要像下面这样将 blog 添加到 django_cc/settings.py 文件的 INSTALLED_APPS 中:

Django快速入门

 

媒体文件支持

将以下内容添加到 settings.py 的底部,以便 Django 知道我们上传的媒体文件保存在哪里:

Django快速入门

 

为了在开发服务器上访问这些文件,我们还需要在 django_cc/urls.py 文件底部导入一些包并添加一些条件:

Django快速入门

 

很好,我们现在已经建立项目了,下面就开始编写模型。

 
正版 玩转Django 2.0 Python编程教程书籍 DjangoWeb 开发技术 接口自动 计算机网络 程序设计 网站开发 清华大学出版社
 
¥46.5
 
购买

编写模型

在我们新建的 blog 应用中找到 models.py 文件,我们将在此编写数据库模型。Post 类作为上传帖子的第一个模型,其中包含已发布的图像,标题,描述和日期。

Django快速入门

 

  • models.FileField(upload_to='images/') 作为保存我们上传的图像的属性,并指明将图像上传到我们在配置文件中设置的媒体路径。
  • models.CharField(default="", max_length=n) 是一个基本的文本属性,并且最大长度为 n。
  • models.DateField(default=datetime.date.today) 是一个 日期/时间 自解析字段,并且设置为当前的日期和时间。

我们还需要告知 Django 根据时间逆序排列,然后完成这个模型:

Django快速入门

 

  • Meta 类可以做很多事情,这里我们用它为我们的模型根据时间排序。
  • __str__ 方法告知 Django,稍后我们在与管理面板交互时显示标题(而不是 Post 1,Post 2,等)。

迁移我们的新模型

 

完成模型后执行下面两个命令,有必要告知 Django 我们对模型做了一些修改并需要将之应用于数据库:

Django快速入门

 

恭喜!现在我们已经为发帖子准备好了数据库。但是有一个问题,我们现在还不能编辑。我们先在 Django 管理面板配置一下,然后就可以发帖了。

管理控制面板

进入我们的 blog 应用的 admin.py 文件并添加以下内容:

Django快速入门

 

  • from blog.models import * 导入我们刚刚创建的所有模型。
  • admin.site.register(Post) 告诉 Django 在控制面板展示模型。

接下来我们将创建一个超级用户,来登录控制面板。输入以下命令并根据提示操作,你只需要填写提示的用户名和密码。

Django快速入门

 

完成后,请转到 127.0.0.1:8000/admin 并使用刚刚设定的登录密码。你会看到这个页面:

Django快速入门

 

从这里你可以看到向 Django 项目中添加帖子。我们已经正式完成了模型部分。接下来设计视图部分,让 Django 来为我们的帖子服务。

视图逻辑

视图是当我们请求页面时 Django 处理逻辑的媒介。我们要做的第一件事是在 django_cc 中创建一个 views.py。在文件中粘贴以下内容:

Django快速入门

 

  • from django.views.generic import TemplateView 允许我们使用 Django 的基本模板视图,视图中我们展示帖子的全部内容。
  • from database.models import Post 导入全部数据库模型用于视图处理方法。
  • PostFeed 是我们的基本模板视图,它会使用我们接下来创建的 index.html 来渲染我们的数据库内容。
  • get_context_data 是我们从数据库向模板发送信息的方法。
  • context["posts"] = Post.objects.all() 我们的模板会从上下文字典中引用帖子,这些帖子被数据库使用 Post.objects.all() 收集到列表中。

我们在 urls.py 中添加一个新的路径,告知 Django 请求该 URL 时调用我们的视图:

Django快速入门

 

我们的基本视图逻辑已经完成了,现在需要构建用于展示帖子的索引模板。

 
Python 新手学Django 2.0架站的16堂课 第2版 何敏煌 web网站框架架构开发设计教程书籍构建移动网站编程书籍
 
¥70.6
 
购买

模板风格

在 Django 项目的根目录中,你可以找到 database 和 django_cc 文件夹,然后创建一个 templates 文件夹并在其内创建一个 index.html 文件。我们将使用 Bulma 来设计我们的站点,所以不需要编写任何 CSS。这里有一个可以作为模板的样板文件.

Django快速入门

 

Django 模板使用名为 Django HTML 的 DRY 版本的 HTML。这是我们将向 index.html 模板中发送上下文信息并渲染的方式。在样板文件的主体中,我们使用帖子中的上下文添加一张卡片。

Django快速入门

 

  • {% for post in posts %} 充任 for 循环,将迭代 posts 中每一个帖子信息。
  • for 循环每次运行时,如果使用了 {{ < variable > }} 的方式,当前迭代器中帖子的上下文信息回替换到 HTML中。
  • {{ post.image.url }} 是你引用图片 URL 的方式,这里不能仅仅是引用图片本身。

当我们访问 127.0.0.1:8000 是,应该展示我们在控制面板中添加的帖子列表:

Django快速入门

 

现在我们有一个网站,可以整齐的展示我们在 Bulma 控制面板中添加的内容。

结束

Django 是一个构建网站以及其他事物的绝佳框架。今天你已经一个非常基本的网站,能够像 Instagram 一样展示帖子,并且希望以后构建一个自己的 Instagram。现在我建议你通过文档或者这个(我以之入门的)介绍来学习更多关于 Django 的信息。

英文原文:https://ceiphr.com/blog/a-crash-course-in-django

译者:敦伟


全部评论: 0

    我有话说: