python Django

一.简介

Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的框架模式,即模型M,视图V和控制器C。它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。 Django是一个处理网络请求的webweb应用框架 Django是开源的 Django有四个核心组件:

1.数据模型和数据库之间的媒介ORM

2.基于正则表达式的URL分发器

3.视图处理系统

4.模板系统

Django的特点

1) 强大的数据库功能:用python的类继承,几行代码就可以拥有一个动态的数据库操作API,如果需要也能执行SQL语句。

2) 自带的强大的后台功能:几行代码就让网站拥有一个强大的后台,轻松管理内容。

3) 优雅的网址:用正则匹配网址,传递到对应函数。

4) 模板系统:强大,易扩展的模板系统,设计简易,代码和样式分开设计,更易管理。

5) 缓存系统:与memcached或其它缓存系统联用,表现更出色,加载速度更快。

6) 国际化:完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言

二.安装使用

1.安装

使用pip工具来安装Django,直接通过下面命令来安装就可以。

#pip install Django

测试django是否安装成功:

python

>>> import django

>>> print(django.VERSION)

(1, 11, 5, u'final', 0)

2.创建项目

首先,我们先通过django来创建一个项目,命令如下:

#django-admin startproject firstproject

然后在当前目录下就自动生成了一个firstproject的项目 然后就可以启动这个项目了:

#python manage.py runserver 127.0.0.1:8080

默认不写ip绑定的是本机的所以ip地址,端口默认为8000 也可以通过在pycharm中直接创建一个Django项目,就自动创建好了文件,然后配置manage.py脚本的参数。直接运行manage.py文件就好。 然后访问url:http://127.0.0.1:8080,如下图所示: 有一个欢迎的首页

2.项目目录结构

第一层:sixgod    项目名称 
第二层: sixgod目录和__init__.py文件,声明是一个包,表示项目实际的python包,不要随意更改该目录,与配置有关联 
settings.py      项目的全局配置中心 
urls.py            项目的url配置中心 

wsgi.py          项目的wsgi配置中心 
templates      模板目录 
manage.py    django命令管理脚本

3.创建app

什么叫app呢,app到底有什么作用呢? 打个比方,猿课网站:http://www.apelearn.com/,上面有linux课程,python课程,web前段课程,用户登录,论坛讨论等这些不同的模块,我们划分为不同的app,那我们就需要在django里面创建不通的app啦。接下来,我们就来看看如何创建app 如果是命令行模式:

#python manage.py startapp linux

#python manage.py startapp python

如果是pycharm,你就需要点击:Tools->>Run manage.py Task 然后出现的交互命令行上输入:startapp linux 就出现了linux的模块。

4.Django的解析顺序

既然我们知道Django是使用的MVC的架构,那我们先来聊聊MVC是什么样的原理,首先,通过MVC中的C就是control,用来接收url请求,对应我们django中的url.py模块,M就代表Model,调用数据库的Model层,就是Django的model.py模块,然后经过业务逻辑层的处理,最后渲染到前端界面。前端就是MVC中的view层,对应django的view模块。 其实所有的参数定义都是以setting.py为准,首先django先去setting.py中找到ROOT_URLCONF = sixgod.urls'找到总url。然后在sixgod下的urls.py文件中的urlpatterns列表变量,然后根据里面的URL的正则表达式进行解析,如果解析到,就调用第二个参数,第二个参数对应一个类或者一个函数,或者直接是一个前端页面,在经过类或者函数处理完以后,在展现在前端界面。而前端是单独的html文件,前端界面和后端处理分开,架构更加清晰。 在上面的目录结构中,每一个app都会有一个view.py, model.py,我们自己还要在创建一个url.py,通过include函数,在firstproject项目中的总url.py分出去,把属于各自的app的url分配到不通的APP的urls.py文件中,这样可以降低耦合度,增加代码的健壮性。

5.创建urls.py文件

urls作为程序的url入口,支持正则匹配,讲访问的url映射到view中的函数中。为了能调用每个app管理自己的url,我们首先需要在sixgod的urls.py文件中做如下修改:

注意事项: 为了避免和别的app取同样的名字,一般我们会在名字前加一个app名称作为前缀 url匹配,主url不需要/反斜杠:因为django已经给域名加了一个反斜杠,如:http://127.0.0.1/ 主url后面要加/, app的url前面就不需要加/了, 主url后面一般不要加$符号, app的url后面要加$符号

然后在创建linux/urls.py文件,编辑如下:

view.py文件

而以上:http://127.0.0.1:8080/linux的url对应的就是view模块中的index函数,在linux的view.py中定义index函数 :

然后在浏览器上访问:http://127.0.0.1:8080/linux/,如下图所示:

6.urls捕获参数

url参数的捕获有两种方式:

a.    

捕获位置参数(可变参数):在url函数中,使用正则表达式()进行捕获参数,然后在view中定义即可。如下所示:

在urls.py中增加如下: url(r'hello/p1(\w+)p2(.+)/$', views.hello),

在views.py中增加如下:

然后我们在浏览器上访问url:http://127.0.0.1:8080/linux/hello/p1ap2b/

如下图所示: url中传入参数a和b, 最后直接在界面中打印出来

b .

捕获关键字参数:在url函数中,正则表达是用(?P<keyword>)进行捕获,然后在views.py中定义即可

在urls.py中增加如下: url(r'keyword/(?P<ip>\S+)/$', views.keyword),

在views.py中增加如下: def keyword(request, ip):     return HttpResponse("the ip is {0}".format(ip))

在浏览器上访问url:http://127.0.0.1:8080/linux/keyword/1.1.1.1/,如下图所示:

7.urls重定向

在学习url重定向之前,我们先来看看定义url的函数是怎样一个表达形式。

def url(regex, view, kwargs=None, name=None):

regex:url匹配的正则字符串

view:一个可以调用的类型函数,或者使用include函数

kwargs:关键字参数,必须是一个字典,可以通过这个传递更多参数给views.py,views通过kwargs.get(“key”)得到对应的value name:给URL取得名字,以后可以通过reverse函数进行重定向

对于kwargs如何传递参数,我们来看一个例子:

在urls.py中增加如下: url(r'test/$', view=views.test, kwargs={"name": "ling"}, name="test"),

在views.py中增加如下: def test(request, **kwargs): return HttpResponse("{0}".format(kwargs.get("name")))

在浏览器上访问url:http://127.0.0.1:8080/linux/test/, 结果如下图所示:

既然已经知道name属性的用法,现在我们就来说重定向,重定向常用name属性来进行重定向

修改urls.py

url(r'^$', views.index, name="index"),

url(r'redirect/$', view=views.redirect,  name="redirect"),

修改views.py

from django.http import HttpResponse, HttpResponseRedirect

from django.urls import reverse

def redirect(request):    

            return HttpResponseRedirect(reverse("index"))

在浏览器上访问url:http://127.0.0.1:8080/linux/redirect,直接跳转到http://127.0.0.1:8080/linux/.

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值