Django项目深入理解
python应用松耦合
比方说,考虑有一个以前写的视图函数,这个函数显示当前日期和时间。
如果我们想把它的URL 从原来的 /time/ 改变到/currenttime/ ,
我们只需要快速的修改一下URL配置即可,
不用担心这个函数的内部实现。同样的,如果我们想要修改这个函数的内部实现
也不用担心会影响 到对应的URL。此外,如果我们想要输出这个函数到 一些 URL,
我们只需要修改URL配置而不用 去改动视图的代码。
示例一个django目录文件夹:
mysite/
__init__.py :让 Python 把该目录当成一个开发包 (即一组模块)所需的文件。
settings.py:该 Django 项目的设置或配置。
urls.py :该 Django 项目的 URL 声明,即 Django 所支撑站点的内容列表
manage.py:一种命令行工具,可让你以多种方式与该 Django 项目进行交互。
新建一个views.py文件:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
修改urls.py文件:
from django.conf.urls import url
from django.contrib import admin
# 引入python模块
from mysite.views import current_datetime
urlpatterns = [
url(r'^time/$', current_datetime),
url(r'^admin/', admin.site.urls),
]
运行:
python manage.py runserver
打开 http://127.0.0.1:8000/time/ 访问当前时间
项目地址:mysite_time
https://github.com/liuqiuchen/django
实例2:
url中传递数字,页面显示现在的时间加上数字
url的格式:http://127.0.0.1/time/plus/23
主要代码:
urls.py
from django.conf.urls import url
from django.contrib import admin
# 引入python模块
from mysite.views import current_datetime, hours_ahead
urlpatterns = [
url(r'^time/$', current_datetime),
url(r'^time/plus/(\d{1,2})/$', hours_ahead),
url(r'^admin/', admin.site.urls),
]
views.py
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><head><meta charset='utf-8'></head><body>现在的时间是%s<body/>" % now
return HttpResponse(html)
# offset是从匹配的URL里提取出来的,提取的字符总是字符串
# 因为urls.py中正则表达式 (\d{1,2}) 只提取数字字符。 这也是URL配置的另一个好处:提供了清晰的输入数据有效性确认。
def hours_ahead(request, offset):
offset = int(offset) # 将字符串转换为整数
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><head><meta charset='utf-8'></head><body>推迟%s小时,以后的时间是%s<body>" % (offset, dt)
return HttpResponse(html)
完整的目录文件:
mysite_time2
https://github.com/liuqiuchen/django
Django项目深入理解的更多相关文章
- Apache部署django项目
在此之前,我们一直使用django的manage.py 的runserver 命令来运行django应用,但这只是我们的开发环境,当项目真正部署上线的时候这做就不可行了,必须将我们的项目部署到特定的w ...
- Python开发入门与实战2-第一个Django项目
2.第一个Django项目 上一章节我们完成了python,django和数据库等运行环境的安装,现在我们来创建第一个django project吧,迈出使用django开发应用的第一步. 2.1.创 ...
- 二.django项目环境搭建
Ⅰ.web框架介绍 1.socket 服务端 1)客户端(手机中各种app.浏览器)是用来与服务端(网站的服务器程序)进行交互的 2)服务端类似发电厂,客户端类似电器,socket类似插座,互联网的数 ...
- 如何使用Visual Studio Code开发Django项目
如何获得 Visual Studio Code 访问 http://code.visualstudio.com 下载并安装. 前提条件 安装Python 2.7 及 Python 3.5,Window ...
- Pycharm 开发 Django 项目
1. 安装Pycharm, 自行百度安装教程 2. 安装python3 自行百度安装教程 3. 安装Django框架 使用命令: Window的终端控制台输入:安装Django框架. pip inst ...
- 调试django项目的土方法
pyscripter是自己编写python程序的ide.有时想深入了解一些程序的工作机制,直接看源码可能不能一下子看懂,通过看程序运行的结果来看程序的作用更方便理解程序. 调试django项目时,使用 ...
- Django学习笔记之使用 Django项目开发框架
Django 项目是一个定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来.Django 框架的核心组件有: 用于创建模型的对象关系映射 为最终用户设计的完美管理界面 ...
- 创建一个简单的Django项目
1.首先,启动pycharm,点击File->New Project,如下图所示. 2.在New Project对话框中,选择Django,在Location中设置项目路径以及项目名称,在App ...
- Django 项目笔记
Django 环境的搭建 Django 安装 pip install django==2.1.4 Django 创建项目 django-admin startproject mysite Django ...
随机推荐
- Tornado 异步客户端
前言 Tornado是很优秀的非阻塞式服务器,我们一般用它来写Web 服务器,据说知乎就是用Tornado写的. 如果对tornado源码不是很了解,可以先看一下另一篇文章: http://yunji ...
- 使用dynamic动态设置属性值与反射设置属性值性能对比
static void Main(string[] args) { int times = 1000000; string value = "Dynamic VS Reflection&qu ...
- ABP的数据过滤器(Data Filters)
http://www.aspnetboilerplate.com/Pages/Documents/Data-Filters 我们在数据库开发中,一般会运用软删除 (soft delete)模式 ,即不 ...
- aceAdmin fuelux tree 从后台获取数据,并设置节点ID等属性
如题,从后台封装数据,有两种方式渲染节点的数据: 1.全部节点加载 2.根据父节点加载子节点 首先,先介绍下第一种渲染方式: 后台返回数据格式(所有的附加属性,都可放在additionalParame ...
- 云计算和大数据时代网络技术揭秘(十三)VXLAN
Vxlan(virtual Extensible LAN)虚拟可扩展局域网,是一种Overlay方式的网络技术,采用了mac in UDP的方式 进行封装,共50字节的报头.该技术的目标是解决虚拟机在 ...
- eclips android项目复制
1.将要复制的项目从workspace里面copy到另外一个目录 2.将这个项目重命名 3.使用android tool 里的包名修改工具(rename appliction package),修改报 ...
- [转] 基于ArcGISServer实现活动地图标注
——王嘉彬(Esri中国上海分公司) 1.背景 1.1.主流互联网地图应用的现状 在目前主流的互联网地图应用中,如 Google Map(图 1).搜狗地图(图2),POI 兴趣点的文字标注越来越多的 ...
- error while loading shared libraries: xxx.so.x"错误的原因和解决办法
http://blog.chinaunix.net/uid-26212859-id-3256667.html 参考博客 http://hi.baidu.com/newdreamllc/item/687 ...
- elixir 高可用系列(一) Agent
概述 elixir 本身是一种 immutable 的语言,默认情况下,进程间是不共享任何状态的,进程之间通过消息来交互. 而 Agent 则封装了一种进程间共享状态的方式,通过这种方式,不用显式的写 ...
- 20+ 个很有用的 jQuery 的 Google 地图插件
转自:http://www.oschina.net/translate/20-useful-jquery-google-maps-plugins Google 地图在寻找我们想要了解的商店或者其它有趣 ...