用Django构建博客(一):开始前的准备工作

本文转载自http://www.dannysite.com/blog/233/

基础环境

本文基于 Python3.5 及 Django 1.9 版本编写,这是到 2016 年 4 月初为止的最新版本。因此请确保系统中安装了对应版本的 Python 和 Django。至于如何安装,本文不再饶恕,可以参考相应的官方文档。

 

关于 Django 的 MVC 层

Django 紧紧地遵循 MVC 模式,可以称得上是一种 MVC 框架。 以下是 Django 中 M、V 和 C 各自的含义:

  • M:数据存取部分,由 django 数据库层处理;
  • V:选择显示哪些数据要显示以及怎样显示的部分,由视图和模板处理;
  • C:根据用户输入委派视图的部分,由 Django 框架根据 URLconf 设置,对给定 URL 调用适当的 Python 函数。

由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),因此 Django 也被称为 MTV 框架。在 MTV 开发模式中:

  • M 代表模型(Model):即数据存取层。该层处理与数据相关的所有事务:如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等;
  • T 代表模板(Template):即表现层。该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示;
  • V 代表视图(View):即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。你可以把它看作模型与模板之间的桥梁。

这个模式在开发中至关重要,因此必须牢记在心并运用到实际开发过程中。

 

开始新的项目

要从何开始?这对于新手来说感觉是个世界大难题。不过因为我们是基于一个框架来开发的,因此其势必会帮助我们解决“如何开始”这个问题。在安装了 Django 之后,能够获得一个命令行工具 django-admin.py,其包含一个 startproject 能帮助我们快速创建一个全新的项目并做好最基本的配置。现在就来创建一个名叫 myblog 的项目:

django-admin.py startproject myblog

命令完成之后就会在当前目录下生成一个新的 myblog 目录,且包含如下文件:

正如之前所说的,Django 已为你做好了基本的配置,因此这个项目已是可运行的,接下来的工作就要交给上图中的 manage.py 来处理。进入 myblog 目录并执行:

python manage.py runserver

你会看到如下内容:

$ python 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.
March 28, 2016 - 23:39:18
Django version 1.9.4, using settings 'myblog.settings'
Starting development server athttp://127.0.0.1:8000/
Quit the server with CTRL-BREAK.

由此可以看出当前服务会运行在 127.0.0.1 的 8000 端口上,这是 Django 开发服务器的默认行为。让我们打开浏览器看看目前为止的成效吧!

恭喜你!你的第一步已经做到了!这是 Django 的欢迎页面,表示一个全新的工程已经运行了起来。

 

连接数据库

接下来要解决的是准备工作的最后一项:连接数据库。我们要构建的是一个博客系统,显然其内容是动态的,因此必须连接到一个数据库来动态存取博客等数据。Django 原生支持多种数据库的连接,包括 SQLite、MySQL、PostgreSQL 等,最简单的要数 SQLite,这是一个基于本地文件的数据库,本文也以此为例。数据库的配置在 Django 全局的配置文件中:myblog/settings.py。其中可以发现以下配置段:

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR,'db.sqlite3'),
    }
}

DATABASES 配置是一个字典项,也就意味着可以配置多数据库。当然这里仅仅包含一个并放在“default”中,标明为默认数据库配置。这里的 ENGINE 指定的是使用 SQLite 作为 backend: django.db.backends.sqlite3;而 NAME 则指明数据库文件的位置,即当前运行目录下的 db.sqlite3。如果仔细观察的话,刚才在执行 runserver 命令的时候,Django 已经自动生成了该文件。不过即便如此,其中还可以算是未包含任何表数据。Django 自身会有一些依赖的数据表,因此有必要在这里将这些基础表创建出来,现在我们要依靠 manage.py 的 migrate 来做到这一点:

$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, sessions, contenttypes
Running migrations:
  Rendering model states... DONE
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying sessions.0001_initial... OK

到这里为止,一些最基础的工作就算完成了,接下来可以开始我们的简易博客系统之旅。

发现更多

探寻 django-admin.py 和 manage.py 的奥秘

之前,我们分别利用了 django-admin.py 和 manage.py 来创新新的项目以及运行开发服务器。这一切都是如此的简单,不过我们可不能就此停止。他们其中还隐藏着大量有用的东西值得去探索,而在接下来的文章中我们也会多次运用到 manage.py 来帮助我们完成一些所需的工作。因此建议大家可以通过阅读官方文档等方式来了解更多有关 django-admin.py 和 manage.py 的故事。

 

一个意想不到的站点管理

Django 非常人性化的一点就是内置了一个站点管理工具。并且在最新的 Django 中,这个站点管理工具是默认开启的。你可以尝试通过 /admin/ 路径来访问他(如果没有对数据库做初始化同步,访问这个页面会报错)。如果可能,尝试通过官方文档等途径提前了解一下他,并尝试执行创建超级管理员账户及利用该账户登录到后台等操作来进行一次初步的体验。这在之后会使用到。

 

用 IDE 工具帮助提高开发效率

当进入到真正的实践环节或者开发工作中的时候,一个工程会包含众多的文件和目录层次,并且各文件之间或多或少会有依赖性存在。因此在这种时候,找寻一个合适的 IDE 工具会帮助我们大大提高工作效率,并对整个工程有一个更好的全局把控。PyCharm 也许是个不错的选择,没有接触过的朋友可以去尝试一下。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值