Django入门开发1

什么是框架

框架就是已经开发好部分功能代码,并封装起来之后提供给开发人员进行快速项目搭建和开发的一种项目。

为什么使用框架

由于不同的项目开发流程大同小异,所以当开发人员,进行了大量的重复工作之后,开始着手于代码自动生成和项目搭建功能的处理,将代码自动生成并就特定的项目功能直接开发出来,封装成一个特定的模块并发布,方便其他开发人员快速高效率的开发项目打下基础,所以各种框架根据不同的项目需要非常流行;一句话:提高效率降低成本。

模块和框架的区别

模块:一堆函数的集合
框架:一堆模块的集合,提供了基本的特定的复杂功能和处理流程的实现

Django的优势

在python中,目前主流的web框架很多,如下面这些:

web.py:轻量级的开源web框架,简单而且功能强大
Flask:python编写的轻量级web开发框架
Django:python编写的一个开源的web应用框架
Tornado:一个web服务器也是一个web框架

当然除此之外,还有一些非主流的web框架...,那么这么多的web框架,我们为什么一定要学习Django呢?
Django是一个功能十分强大的web开发框架,它为我们提供了丰富的各种我们开发时需要用到的功能,如:

强大的MVT项目开发架构
完善的模板视图的支持
准确的路由地址映射
高效的ORM数据操作
完善的后台管理系统
优秀的表单处理功能

Django的历史由来

Django 刚开始是劳伦斯出版集团下属一家处理新闻信息的子公司进行开发搭建的,专 门用于进行新闻网站的开发而使用的一个 CMS(内容管理系统),由于功能十分受开发者喜 欢,所以于 2005 年 7 月开源并得到 IT 界非常友好而热情的接纳,在广大 IT 技术人员经 过大量的完善和扩展之后,于 2008 年 9 月发布了第一个正式版本。
Django 框架的核心组件有:

用于创建模型的对象关系映射
为最终用户设计的完美管理界面
一流的URL设计
设计者友好的模块语言
缓存系统

Django的架构模式

MVC 软件架构: 软件是用来进行数据处理的,数据我们用 Model 来表示,根据软件的三层结构模型, 视图部分通过 View 进行表示,在视图 View 中,我们可以和用户进行数据交互,交互的数 据被提交到服务器,服务器根据用户提交的数据,经过控制器 Controller 进行判断并移交给 合适的函数进行处理的过程,称为 MVC 处理模式。如下图所示:

MVT 软件架构: Django 在处理的过程中,对于经典的 MVC 处理模式并不是非常认同,在实际项目开 发过 程中控制器 Controller 起到的作用非常的有限,所以 Django 将控制器部分也进行了 封装,但是同时扩展了视图 View 部分,增加了模板功能实现了前端网页的复用,所以 Django 的架构模式更加符合 MVT 处理模式。如下图所示:


X{%V2{0(_7(0V241EUFB_BJ.png

Django快速入门

Django的下载安装

Django的版本

目前 Django 大的版本有两个分支:
➢ 1.x 版 稳定成熟的版本,目前企业都使用的这个大版本
➢ 2.x 版 18 年刚刚出现,目前不够稳定,建议可以简单的学习学习
一般来说,选择长期支持版本比较好。

pip install django==1.8
pip install django==1.11
pip install django ,默认下载最新版本 

Django的下载

使用pip命令下载Django:

pip install django==版本号
sudo pip install django==版本号

检查是否下载安装成功:

django-admin --version

如若成功,会返回安装的版本号

第一个Django项目

首先cmd到命令行窗口
cd 到工作空间
执行  django-admin startproject 项目名称
该命令就会创建一个Django项目

django创建成功后,项目结构如下:

|-- mysite              # 表示项目名称
    |-- mysite          # 根模块,根模块跟项目名称保持一致
        |-- __init__.py     # 模块描述文件
        |-- settings.py     # 项目的配置文件
        |-- urls.py     # 根路由模块
        |-- wsgi.py     # django实现wsgi,目前使用不到
    |-- manage.py           # 该文件是项目的命令文件,不需要我们修改

现在项目我们已经创建完成,下面来运行项目:

cd mysite
python manage.py runserver

如果出现如下界面,则表示项目成功:


7I8$73WAV%{P2%`MWCD6LNC.png](https://upload-images.jianshu.io/upload_images/13103779-5abe8e5cb5e1d13f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 使用浏览器驶入http://127.0.0.1:8000,如果页面出现如下内容,则表示我们已经成功! ![Z35H9V9RZ%(%%KM$U(~{{KV.png

1、 默认 Django 项目占据 8000 端口,如果我们需要修改,则在命令后直接加上端口号:

python manage.py runserver 9999

2、 指定特定的 ip 和端口完成访问

python manage.py runserver 192.168.10.145:9000  

浏览器访问,则发现报错:


}KP6WN{G3MX}D~E3V`JYT$V.png

这个则因为 Django 项目如果需要使用特定的 ip 地址访问,则需要在 setting.py 配置文件中的 ALLOWED_HOSTS 配置中加入对应的 ip 地址。

ALLOWED_HOST = ["192.168.13.45"]

重启启动项目,就会发现报错消失。
3、 第二种方法,虽然好用,但是我们发现这样做,只能让配置到 ALLOWED_HOSTS 中的 ip 地址可以访问我们的项目,如果我们想要所有人都访问呢? 可以在 ALLOWED_HOSTS 中配置为*,匹配任意 ip 地址。 之后启动项目使用命令如下:

python manage.py runserver 0.0.0.0:9000 使用 0 匹配任意 ip 地址

4、Django 在 1.9 之后开始支持中文,修改 setting.py 中的 LANGUAGE_CODE 为 zh-Hans

LANGUAGE CODE = 'zh-Hans'

再次启动项目,就会发现英文变成中文了。

创建一个根模块视图

Django提供了完善的模块划分功能,所以我们很少在根项目下创建视图,但是我们刚刚开始,开始先在根项目下创建视图来学习一下。
首先进入到根项目下,创建一个views.py文件。
views.py:

from django.http import HttpResponse 

def index(request):  
    return HttpResponse("<h1>hello Django,I coming</h1>") 

完成视图函数的编写后,需要在路由配置文件中配置路由
urls.py:

from django.conf.urls import url 
from django.contrib import admin 

# 导入视图文件
from . import views 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls),
    # 配置路由信息,当用户访问 index 路径时,则表示有 views.index 函数类处理  
    url(r"^index/",views.index,name="index"), 
] 

启动项目,在地址栏输入:http://192.168.10.145:9000/index/
到此为止,一个视图已经被我们创建完成,路由匹配也成功了!!

创建第一个模块应用

在真正的企业开发中,实质我们需要分模块来管理项目的,Django 也提供了完善的模 块划分功能,很方便我们模块开发,下面我们来使用模块划分来完成一个项目案例。
首先进入到项目的主目录中来,之后执行 Django-admin startapp 模块名称:

# 进入项目文件夹  
cd mysite/  
# 创建第一个博客应用  
django-admin startapp blog 

完成后,项目结构如下:

|-- mysite          # 项目名称
    |-- mysite      # 根模块
        |-- __init__.py # 模块描述文件
        |-- settings.py # 项目的配置
        |-- wsgi.py # 实现了wsgi web网关接口
    |-- blog        # 子模块
        |-- migrations  # 同步数据的迁移文件的文件夹
        |-- __init__.py # 模块描述文件
        |-- admin.py    # 后台管理系统用来管理子模块中的模型类的文件
        |-- views.py    # 子模块的视图文件
        |-- urls.py # 需要我们创建,子模块的路由文件
        |-- models.py   # 定义模型类
        |-- tests.py    # 测试文件
        |-- apps.py # 定义子模块项目项的文件       
    |-- manage.py       # 项目的命令文件

模块创建完成后,Django 根项目还不知道新增加了一个模块,所以需要我们将新创建 的模块告诉根项目,打开根项目模块下的 setting.py 文件,找到 INSTALLED_APPS 选项:

INSTALLED_APPS = [     
    'django.contrib.admin',     
    'django.contrib.auth',     
    'django.contrib.contenttypes',     
    'django.contrib.sessions',     
    'django.contrib.messages',     
    'django.contrib.staticfiles',  
    # 告诉根项目,我新增了一个模块  
    'blog', 
] 

现在,模块应用创建完毕,并且正常添加到了 Django 项目中了。以后我们开发项目, 实在是在不同的模块上开发,根项目只是作为管理整体项目存在,我们不会再在根项目上创 建视图和视图函数了。

创建模块中第一个视图处理函数

打开 myblog/views.py 视图处理文件,添加视图处理函数如下:

from django.shortcuts import render 
from django.http import HttpResponse 

def index(request):  
    print("博客首页")  
    return HttpResponse("<h1>博客首页</h1>") 

在模块目录下创建一个新的 urls.py 文件,用来完成模块本身的路由配置:

from django.conf.urls import url  
from . import views 

urlpatterns = [  
    url(r"^index/$",views.index,name="index"), 
] 

上面我们是在模块本身中进行的路由配置和视图对应函数,等完成这些配置后,我们需 要通知根项目,将我们的配置添加到根项目中去,在根项目的 urls.py 文件中配置,如下:

from django.conf.urls import url 
from django.contrib import admin 
from django.conf.urls import include 

# 导入视图文件 
from . import views 

urlpatterns = [     
    url(r'^admin/', admin.site.urls),  
    url(r'^blog/',include("blog.urls")),  
    url(r"^$",views.index,name="index"), 
]  

至此,项目配置结束,启动项目。
项目运行之后,打开浏览器,再次访问 http://localhost:9000,出现项目默认页面

LC663E0K_Z39H`9J1SEG)(6.png

再次访问 http://localhost:9000/blog/index,出现博客应用页面
U}3{FM7T{J4LQZSAUM3E0HR.png

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,839评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,543评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,116评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,371评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,384评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,111评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,416评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,053评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,558评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,007评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,117评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,756评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,324评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,315评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,539评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,578评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,877评论 2 345

推荐阅读更多精彩内容

  • 点我查看本文集的说明及目录。 本项目相关内容( github传送 )包括: 实现过程: CH1 创建一个博客应用 ...
    学以致用123阅读 4,397评论 0 31
  • 版权: https://github.com/haiiiiiyun/awesome-django-cn Aweso...
    若与阅读 23,018评论 3 241
  • Django的来历:python开发的! long long long years ago!劳伦斯出版集团新闻 网...
    JAguys阅读 333评论 0 0
  • 切换到创建项目的目录 cd C:\Users\admin\Desktop\DjangoProject创建名为pr...
    在努力中阅读 3,259评论 2 3
  • 一起特大非法经营证券交易所挂牌上市销售为一体的综合性大学。我是mac。我是mac。我是mac。我就去做一些有意义的...
    23哈喽阅读 206评论 0 0