Django基础篇--创建Django应用

新书小广告

《Python爬虫开发与项目实战》基础篇 试读章节链接:

http://pan.baidu.com/s/1hrWEOYg

这本书包括基础篇,中级篇和深入篇三个部分,不仅适合零基础的朋友入门,也适合有一定基础的爬虫爱好者进阶,如果你不会分布式爬虫,不会千万级数据的去重,不会怎么突破反爬虫,不会分析js的加密,这本书会给你惊喜。

目录

1.2 Django基础篇--搭建开发环境

前言

经过上一节 Django基础篇--搭建开发环境 ,我们已经创建了CoolBlog工程,但是关于CoolBlog的功能代码还没有写,Django只是帮助我们搭建好一个框架。在Django的思想中,希望我们将项目的功能分成一个个应用来进行开发,类似于开发插件,最后Django会安装好这些“插件”并运行。不过也没有必要划分的这么仔细,Django只是想让我们的项目更有层次性,我们完全可以将关联比较密切的几个功能统一成一个应用。

正文

通过 “Django基础篇--CoolBlog项目分析”,我们对整个项目的功能做了一个整体的认知,大体可以将其分为三个应用来进行开发:

  1. 文章、分类和标签这三者关系紧密,可以统一作为一个应用来开发,相当于前台,名称为home。
  2. 评论功能虽然和文章有很大的关系,但是评论功能的实现可能会用到第三方插件,我还是倾向于将其作为独立的应用,名称定为:comments。
  3. 搜索功能可以作为独立的应用,名称定为:search。

接下来我们依次开发上述应用,首先我们开发home应用。在命令行中,激活虚拟环境,进入manage.py所在目录,并运行python manage.py startapp home命令创建home应用,如下图所示。

图1.19 创建应用

这时候会在CoolBlog生成了一个home文件夹,我们看一下目录结构。

图1.20 应用目录结构

在生成应用的时候,我们用到了startapp命令,在启动项目的时候,用到了runserver命令,这是Django为了方便我们开发提供的一些快捷方式,而manage.py就是这个快捷方式的入口。幸亏有了这些命令,不然我们新建应用,需要建立好多文件。

在图1.20的目录结构中,主要对home目录下的几个文件或文件夹进行说明:

  • migrations文件夹用来存放对数据库的改动
  • admin.py是用来向Django后台注册应用,并可以自定义在管理后台的显示和过滤方式
  • models.py是用来描述应用的数据库模型,Django会通过ORM的方式将模型映射成数据库的真实改动。
  • views用来定义视图处理方式,对于不同的url请求,我们该如何处理。

创建完应用就结束了吗?当然没有。这个时候还没有告诉Django这个应用的存在,需要注册这个应用,类似于安装插件。在CoolBlog文件夹中还有一个同名的CoolBlog文件夹,里面的文件是关于整个工程的配置信息。

打开其中的settings.py文件找到INSTALLED_APPS字段,将home应用的名称添加其中。

INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'home',#注册home目录 ]

大家可以看到除了我们自己添加的应用,还有一些Django内置的应用,这就是Django强大的地方。很多功能Django都帮我们实现了,比如后台管理,权限控制与认证等等,这样做一些大点的工程就会变得非常快捷,在这里要感谢一下Django的开发团队。本节创建应用结束,下一节开始设计home应用的数据库模型,在Web项目的开发中,数据库模型的设计始终是整个项目的重中之重。

原文发布于微信公众号 - 七夜安全博客(qiye_safe)

原文发表时间:2017-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏codingforever

构建高性能服务器 -- 缓存篇

说到缓存,相信大家都不陌生。缓存的目的都在于避免重复的慢速计算,比如数据库访问。相对于慢速计算,缓存将会大大提高数据存取的速率,当然同时将会缩短用户每次请求处理...

1084
来自专栏deepcc

jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

1011
来自专栏杨建荣的学习笔记

oracle监控工具ignite使用图解(r5笔记第78天)

对于oracle来说,在除了EM,Gridcontrol之外还有什么其它的监控工具呢,可能precise也是一个不错的选择,前几天在论坛中看到一个哥们简单回复了...

41213
来自专栏北京马哥教育

Linux的10个最危险的命令

Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。

1332
来自专栏数据和云

10分钟搭建MySQL Binlog分析+可视化方案

日志服务最近在原有 30+ 种数据采集渠道 基础上,新增 MySQL Binlog、MySQL select 等数据库方案,仍然主打快捷、实时、稳定、所见即所得...

2083
来自专栏Java架构沉思录

高并发环境下服务器该如何优化

以下内容为入门级介绍,意在对老技术作较全的总结而不是较深的研究。主要参考《构建高性能Web站点》一书。

2633
来自专栏互联网杂技

为何webpack风靡全球?三大主流模块打包工具对比

前端的模块系统经历了长久的演变,对应的模块打包方案也几经变迁。从最初简单的文件合并,到AMD 的模块具名化并合并,再到browserify将CommonJS 模...

3728
来自专栏linux、Python学习

你不知道Linux的10个最危险的命令

Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。

880
来自专栏Python中文社区

如何构建爬虫代理服务?

如何构建爬虫代理服务 专栏作者:Kaito 起因 做过爬虫的人应该都知道,抓的网站和数据多了,如果爬虫抓取速度过快,免不了触发网站的防爬机制,几乎用的同一招就是...

2929
来自专栏全华班

springcloud学习手册-API Gateway (API网关)

导读 | API Gateway (API网关) ? 一、为什么服务之间需要使用API Gateway (API网关)呢? 引用「Chris Richardso...

3546

扫码关注云+社区