django 引用css失效_Django快速入门

85f4a6f582ec613f48cbfea8a6f83381.png

预备知识

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 文件夹创建项目:

3359a36326a12e418df2eca74833bc0d.png

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

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

aee7abc3c278fb45f5c271a30751acda.png

  • source bin/activate 会激活我们创建的虚拟环境。这意味着如果我们安装 Django 的话,只会在我们项目中安装,而不会安装到整个系统环境中。

  • pip install django 会使用 Python 的包管理器安装最新版本的 Django。

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

7182498cfe1d57ff3093906e4244668a.png

  • 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 的启动页。

76aab2d423371cc1e1798f36850f9996.png

数据库

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

44e37e5e20bbbff4a0bcf1ee28ac09bc.png

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

a4cffaaacca4370b6d0ec35d2fc9f195.png

媒体文件支持

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

0fe8e68dfe77117344b512e6d35dfdda.png

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

3397fd42923f96aa403d4c6a9a11e1ef.png

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

编写模型

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

00c5aa0b2c16e81a7cb015162cdfcdd3.png

  • models.FileField(upload_to='images/') 作为保存我们上传的图像的属性,并指明将图像上传到我们在配置文件中设置的媒体路径。

  • models.CharField(default="", max_length=n) 是一个基本的文本属性,并且最大长度为 n。

  • models.DateField(default=datetime.date.today) 是一个 日期/时间 自解析字段,并且设置为当前的日期和时间。

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

740525f47eb48a59667601cd793a2f1a.png

  • Meta 类可以做很多事情,这里我们用它为我们的模型根据时间排序。

  • __str__ 方法告知 Django,稍后我们在与管理面板交互时显示标题(而不是 Post 1,Post 2,等)。

迁移我们的新模型

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

79a06efb7ce8395b7fe6cf6122ac2e08.png

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

管理控制面板

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

f44b000364d7394fa4876c17f728afc0.png

  • from blog.models import * 导入我们刚刚创建的所有模型。

  • admin.site.register(Post) 告诉 Django 在控制面板展示模型。

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

db24e69f147a90864fc76b5e2f6e9be6.png

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

3b3f19b9519c9937feb4d33b3935445b.png

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

视图逻辑

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

f1992251c6d11486f4af92bf8d84f62e.png

  • 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 时调用我们的视图:

8de4a3e8eb6b37a8a2842501573ac240.png

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

模板风格

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

c3769111bd7cf6bdaba8273185ac1636.png

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

9559f965f5c27087bfe538db9f25df39.png

  • {% for post in posts %} 充任 for 循环,将迭代 posts 中每一个帖子信息。

  • for 循环每次运行时,如果使用了 {{ < variable > }} 的方式,当前迭代器中帖子的上下文信息回替换到 HTML中。

    • {{ post.image.url }} 是你引用图片 URL 的方式,这里不能仅仅是引用图片本身。

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

3d5edae84da57c6004e5b8b60bcd5996.png

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

结束

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

英文原文:https://ceiphr.com/blog/a-crash-course-in-django 
译者:敦伟
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值