PythonWeb框架之Django
Django
简介:
Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型Model,模板Template和视图View。此框架设计模式借鉴了MVC框架的思想,MVC是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),具有耦合性低、重用性高、生命周期成本低等优点。

下载:
官网下载页面:https://www.djangoproject.com/download/
安装:以Windows为例,
其他操作系统的安装参考:http://www.runoob.com/django/django-install.html
cmd命令:等号后面填写要下载的版本号
pip install django==1.11.9
创建一个Django项目:
cmd命令:
django-admin startproject 项目名称
启动Django项目:
在Django项目目录下运行命令:
python manage.py runserver IP:端口
配置settings.py文件:
1,模板文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, "template")], # template文件夹位置
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
2,静态文件
STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]
3,csrf中间件:用于验证用户表单提交,刚开始使用可以先注释掉,方便测试
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Django基础使用工具:
from django.shortcuts import HttpResponse, render, redirect
1,HttpResponse
# 接收一个字符串参数,返回给浏览器
def test(request):
return HttpResponse("OK")
2,render
# 接收一个request参数和模板文件,动态填充数据给模板文件时,
还可以添加一个字典类型的参数,这些数据可以在模板文件中通过特定格式拼接到文件中然后返回给浏览器。
def test(request):
return render(request, "test.html", {"name": "tom", "age": 18})
3,redirect
# 接收一个URL参数,会跳转到此URL进行访问。
def test(request):
return redirect("/test/") # 可以是外网的URL也可以是当前项目中的URL
APP功能模块:
一个Django项目可以分为多个APP,用来隔离项目中不同功能模块的代码。
1,创建app
# 命令行运行
python manage.py startapp app名字
路由系统:
URL与视图系统之间的映射关系。
1,映射格式
# 在urls.py文件中
from django.conf.urls import url urlpatterns = [
url(正则表达式, views视图函数,参数,别名),
]
url参数:
- 正则表达式:一个正则字符串,用于匹配请求的url
- views视图函数:一个定义好的视图函数,用于处理对应的url请求
- 参数:可以不传,一个字典类型的数据,用于给视图函数传递默认参数
- 别名:可以不传,name=值,给映射起别名,用于其他地方通过别名获取url
2,正则分组匹配
from django.conf.urls import url from . import views urlpatterns = [
url(r'^test/([0-9]{4})/$', views.test),
]
正则表达式分组匹配(通过圆括号)可以捕获URL中的值并以位置参数形式传递给视图。
3,分组命名匹配
from django.conf.urls import url from . import views urlpatterns = [
url(r'^test/(?P<num>[0-9]{4})/$', views.test),
]
分组命名匹配的正则表达式组可以捕获URL中的值并以关键字参数形式传递给视图。
ps:视图函数通过参数接收到的数据都是字符串格式的!
分组命名匹配可以传递关键字参数,那么就可以在视图函数指定默认参数来提供默认值。例如:
# urls.py中
from django.conf.urls import url from . import views urlpatterns = [
url(r'^blog/$', views.page),
url(r'^blog/page(?P<num>[0-9]+)/$', views.page),
] # views.py中,可以为num指定默认值
def page(request, num=""):
pass
4,include方法
当有多个APP功能模块时,url映射关系都写在项目目录下的urls.py中就比较容易混乱,所以一般会在对应的APP下面新建一个urls.py来设定自身的映射。这时候就可以使用include在项目urls.py中给不同的url请求指定对应的APP下面的urls.py,从而完成不同功能请求的匹配。
from django.conf.urls import include, url urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^blog/', include('blog.urls')), # 指定到博客功能APP下面的urls
url(r'^news/', include('news.urls')), # 指定到新闻功能APP下面的urls
]
5,别名的使用
- 在项目函数中获取对应的url匹配:通过reverse来完成反向解析
url(r'^home', views.home, name='home'), # 给我的url匹配模式起名为 home # 在函数中引用
from django.urls import reverse reverse("home") - 在模板文件中引用
{% url 'home' %}
当进行分组匹配时,就会需要参数,这时的引用方式为:
# 函数中
reverse('别名', args=(参数, )) # 模板中
{% url '别名' 参数 %}
命名空间模式:可以通过命名空间可以在不同的APP中解析出唯一的URL。
# 项目目录下的urls.py
from django.conf.urls import url, include urlpatterns = [
url(r'^app01/', include('app01.urls', namespace='app01')),
url(r'^app02/', include('app02.urls', namespace='app02')),
]
解析使用方式:
# 函数中使用
reverse('app01:别名') # 解析出app01下面的某个分组匹配对应的url # 模板中使用
{% url 'app01:别名' %}
PythonWeb框架之Django的更多相关文章
- 16 . PythonWeb框架之Django
Web框架简介 Web开发是Python语言应用领域的重要部分,也是目前最主要的Web开发语言之一,在其二十多年的历史中出现了数十种Web框架,比如Django.Tornado.Flask.Twist ...
- 15 . PythonWeb框架本质
PythonWeb框架的本质 简单描述就是:浏览器通过你输入的网址给你的socket服务端发送请求,服务端接受到请求给其回复一个对应的html页面,这就是web项目.所有的Web应用本质上就是一个so ...
- python框架之django
python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django temple django models ...
- 循序渐进Python3(十二) --1-- web框架之django
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能 ...
- python web框架——扩展Django&tornado
一 Django自定义分页 目的:自定义分页功能,并把它写成模块(注意其中涉及到的python基础知识) models.py文件 # Create your models here. class Us ...
- 两个Python web框架:Django & Tornado比较
就是说它作为 web 框架比 Django 简单,又支援异步 IO,且更不需要前端的 webserver ? 我已经混乱了, Tornado是 Nginx.Django.Node.js 的结合体?又或 ...
- 第六篇:web之python框架之django
python框架之django python框架之django 本节内容 web框架 mvc和mtv模式 django流程和命令 django URL django views django te ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- Python开发【第二十一篇】:Web框架之Django【基础】
Python开发[第二十一篇]:Web框架之Django[基础] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5237704.html Python之 ...
随机推荐
- arcgis图层控制
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...
- DMSkin https://github.com/944095635/DMSkin
与源码无关内容 1.如果你有XAML相关的外包需求,可以通过QQ或微信与我取得联系.(QQ:"944095635" 微信号:"qq944095635") 2.我 ...
- 高效整洁CSS代码原则(上)
CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则: 1. 使用Reset但并非全局Re ...
- Spring Boot → 09:使用外置Servlet容器_tomcat9.0
Spring Boot → 09:使用外置Servlet容器_tomcat9.0
- Spring_Bean的生命周期
init-method="init" destroy-method="destory" 指定初始化和销毁方法 创建Bean后置处理器 <!-- 实现Bea ...
- 一.JDBC学习入门
一.JDBC相关概念介绍 1.1.数据库驱动 这里的驱动的概念和平时听到的那种驱动的概念是一样的,比如平时购买的声卡,网卡直接插到计算机上面是不能用的,必须要安装相应的驱动程序之后才能够使用声卡和网卡 ...
- phpinfo空白
<?php phpinfo(); ?> 以上代码放入一个kk.php的文件里,但浏览器显示是空白. 原因: 检查php.ini文件里 disable_functions =后面有没有限制p ...
- python 对象(object)
- 阿里云区块链共创会:BaaS正式商业化 广邀合作伙伴共建生态
摘要: 阿里云宣布区块链服务Hyperledger Fabric版正式商业化,并发布生态合作伙伴计划. 2019年3月29日,阿里云区块链于深圳召开正式商业化共创会,宣布区块链服务Hyperledge ...
- poj3261 后缀数组求重复k次可重叠的子串的最长长度
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 13669 Accepted: 6041 Ca ...