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

上一篇:.Net平台开源作业调度框架Quartz.Net


下一篇:.net平台的RSA实现以及与Delphi之间的互操作性