准备好好学习一下python,就从django开始吧,顺带了解一下网站的开发。今天在windows上安装了python,django,以及酷炫吊的IDE——pycharm,学习资料主要是《the Django Book 2》,hello world的程序就不要详细叙述了,比较简单而且网上有很多例程,主要通过动态内容的实验对django开发具有一个大致的认识。

一、新建工程

第一个目标是创建一个显示当前日期和时间的网页。打开pycham,新建一个django的工程,避免了命令行下的繁琐命令,命名为time_test,application name命名为show_time。可以看到工程目录如下图所示:

二、视图函数

           所谓的视图函数(或 视图 ),只不过是一个接受 Web 请求并返回 Web 响应的 Python 函数。实际上,该响应可以是一份网页的 HTML 内容、一次重定向、一条 404 错误、一份 XML 文档、一幅图片,或其它任何东西。视图本身包含返回该响应所需的任意逻辑。该段代码可以随意放置,只要在 Python 的路径设置中就可以了。没有其它要求——也可以说是没有任何奇特之处。在pycharm建立工程的时候,已经在应用程序的目录下自动帮我们成生了视图函数的程序views.py。
        打开views.py文件,编写python代码如下:
# coding=utf-8

from django.http import HttpResponse
import datetime

def current_datetime(request):
    # 计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now
    now = datetime.datetime.now()

    #构建Html响应,使用now替换占位符%s
    html = "<html><body>It is now %s.</body></html>" % now

    #返回一个包含所生成响应的HttpResponse对象
    return HttpResponse(html)

每个视图函数都以一个 HttpRequest 对象为第一个参数,该参数通常命名为 request 。


三、URL映射

        统一资源定位符(Uniform
Resource Locator,缩写为URL)是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。该视图函数返回了包含当前日期和时间的一段 HTML 页面。但是如何告诉 Django 使用这段代码呢?这就是 URLconfs 粉墨登场的地方了。URLconf 就像是 Django 所支撑网站的目录。它的本质是 URL 模式以及要为该 URL 模式调用的视图函数之间的映射表。你就是以这种方式告诉
Django,对于这个 URL 调用这段代码,对于那个 URL 调用那段代码。
        在建立工程的时候也已经自动生成了URLconf,即urls.py,打开文件,编辑如下:
from django.conf.urls import patterns, include, url
from show_time.views import current_datetime

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'time_test.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    (r'^time/$', current_datetime),
    #url(r'^admin/', include(admin.site.urls)),
)

首先,我们从模块中引入了 current_datetime 视图。接着,我们加入了 (r'^time/$', current_datetime), 这一行。该行就是所谓的 URLpattern ,它是一个 Python 元组,其第一个元素是简单的正则表达式,第二个元素是为该模式应用的视图函数。简单来说,我们只是告诉 Django,所有指向 URL /time/ 的请求都应由 current_datetime 这个视图函数来处理。


四、运行网页

        在pycharm点击运行,在下面的调试窗口中,可以看到如下的信息:

        在浏览器中打开地址:http://127.0.0.1:8000/time/,可以看到网站已经在运行了:

五、松耦合原则

        简单的说,松耦合是一个 重要的保证互换性的软件开发方法。如果两段代码是松耦合的,那么改动其中一段代码不会 影响另一段代码,或者只有很少的一点影响。Django的URL配置就是一个很好的例子。在Django的应用程序中,URL的定义和视图函数之间是松
耦合的,换句话说,决定URL返回哪个视图函数和实现这个视图函数是在两个不同的地方。这使得 开发人员可以修改一块而不会影响另一块。
        比方说,考虑有一个以前写的视图函数,这个函数显示当前日期和时间。如果我们想把它的URL 从原来的 /time/ 改变到 /currenttime/ ,我们只需要快速的修改一下URL配置即可, 不用担心这个函数的内部实现。同样的,如果我们想要修改这个函数的内部实现也不用担心会影响
到对应的URL。此外,如果我们想要输出这个函数到 一些 URL, 我们只需要修改URL配置而不用 去改动视图的代码。

六、动态URL

        在上面的实例中,虽然网页的内容是动态的,但是URL是静态的。在大多数动态web应用程序,URL通常都包含有相关的参数。让我们创建第二个视图来显示当前时间和加上时间偏差量的时间,设计是这样的: /time/plus/1/ 显示当前时间+1个小时的页面
/time/plus/2/ 显示当前时间+2个小时的页面 /time/plus/3/ 显示当前时间+3个小时的页面,以此类推。
       为了让程序更具有通用性,以及让URL更加漂亮,我们需要使用正则表达式来规范我们的URL表达:
from django.conf.urls import patterns, include, url
from show_time.views import current_datetime, hours_ahead

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'time_test.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    (r'^time/$', current_datetime),
    (r'^time/plus/(\d{1,2})/$', hours_ahead),
    #url(r'^admin/', include(admin.site.urls)),
)

我们把它限制在最大允许99个小时, 这样我们就只允许一个或两个数字,正则表达式的语法就是 \d{1,2} 。现在我们已经设计了一个带通配符的URL,我们需要一个方法把它传递到视图函数里去,这样 我们只用一个视图函数就可以处理所有的时间段了。我们使用圆括号把参数在URL模式里标识 出来。在这个例子中,我们想要把这些数字作为参数,用圆括号把 \d{1,2} 包围起来。

        现在开始写 hours_ahead 视图:
# coding=utf-8

from django.http import HttpResponse
import datetime

def current_datetime(request):
    # 计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now
    now = datetime.datetime.now()

    #构建Html响应,使用now替换占位符%s
    html = "<html><body>It is now %s.</body></html>" % now

    #返回一个包含所生成响应的HttpResponse对象
    return HttpResponse(html)

def hours_ahead(request, offset):
    offset = int(offset)
    dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
    html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
    return HttpResponse(html)

重新运行,在浏览器中输入http://127.0.0.1:8000/time/plus/3/



----------------------------------------------------------------

欢迎大家转载我的文章。

转载请注明:转自古-月

http://blog.csdn.net/hcx25909

欢迎继续关注我的博客



pycharm+django之小试牛刀的更多相关文章

  1. Python之Django环境搭建(MAC+pycharm+Django++postgreSQL)

    Python之Django环境搭建(MAC+pycharm+Django++postgreSQL) 转载请注明地址:http://www.cnblogs.com/funnyzpc/p/7828614. ...

  2. PyCharm Django项目开发的调试方法

    下面介绍两种PyCharm Django项目开发的调试方法: 方法一: 1. 使用PyCharm 自带的django项目Debug工具, 当然前提条件是django项目环境已经搭建好了. 2. 在代码 ...

  3. 用pycharm+django开发web项目

    pycharm是python的一个商业的集成开发工具,本人感觉做python开发还是很好用的,django是一个很流行的python web开源框架,本文就是使用pycharm+django来开发py ...

  4. python+pycharm+django admin css样式出问题

    最近打算学习一下Python,基础知识有了大概的了解,想上手搞搞东西. 我用的python 3.5+pycharm+django 1.11.2 在使用Django,打开127.0.0.1:8000/a ...

  5. PyCharm Django Python 开发环境配置 详细教程

    PyCharm Django Python 开发环境配置 详细教程 1. Python 下载及安装 (1)根据需要的版本去 Python 官网(https://www.python.org/downl ...

  6. python:mysql+pycharm+Django环境搭建

    1.安装mysql-python 环境:OS X Yosemite10.10.2 + Python2.7 首先网上搜了下mysql-python,说要先安装mysql客户端,然后改配置文件,可是各种改 ...

  7. Pycharm+django新建Python Web项目

    这两天初学Python,首先是学习Python语法有PyCharm就可以运行Console程序了,因为是初学所以,尽量写的比较详细,包括参考的资料地址...   1.下载Python,并安装[本文版本 ...

  8. window安装pycharm Django

    pycharm 安装Pycharm  直接在官网下载就可以,这里说一下如何破解注册码的问题: 修改电脑中hosts文件(地址: C:\Windows\System32\drivers\etc ),改变 ...

  9. Python3+PyCharm+Django+Django REST framework开发教程

    一.说明 自己一是想跟上潮流二是习惯于直接干三是没有人可以请教,由于这三点经常搞得要死要活.之前只简单看过没写过Diango,没看过Django REST framework,今天一步到位直接上又撞上 ...

随机推荐

  1. Hibernate查询多个数据

    Query query = session.createQuery("from Table");//表名首字母大写 query.setFirstResult(0); //从第一个开 ...

  2. node之fs模块

    前言 fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. 一.文件读取 文 ...

  3. 装 ubuntu + win10 出现 grub rescue 并处理之

    开机出现 grub rescue 原因:装 ubuntu + win10 双系统时有可能搞坏启动文件. grub rescue 隶属于 ubuntu管理. grub rescue 里可用命令很少,主要 ...

  4. sublime下配置C/C++运行环境

    最近在学习<WEB前端课程>老师教我们使用DW,但是不太喜欢,就选择了sublime,写前端代码还是很方便. 平时都是写C++,C比较多,借鉴了别人的配置步骤,将sublime打造成IDE ...

  5. IO复制多级目录 控制台输入文件目录然后把目录下java文件复制到 D: 并统计java个数

    package cn.itcast_05; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor ...

  6. springMVC源码分析--RequestToViewNameTranslator请求到视图名称的转换

    RequestToViewNameTranslator可以在处理器返回的View为空时使用它根据Request获取viewName.RequestToViewNameTranslator提供的实现类只 ...

  7. 六星经典CSAPP-笔记(12)并发编程(上)

    六星经典CSAPP-笔记(12)并发编程(上) 1.并发(Concurrency) 我们经常在不知不觉间就说到或使用并发,但从未深入思考并发.我们经常能"遇见"并发,因为并发不仅仅 ...

  8. 六星经典CSAPP-笔记(11)网络编程

    六星经典CSAPP-笔记(11)网络编程 参照<深入理解计算机系统>简单学习了下Unix/Linux的网络编程基础知识,进一步深入学习Linux网络编程和TCP/IP协议还得参考Steve ...

  9. 1.cocos2dx 3.2环境搭建

    1        所需软件 jdk-7u25-windows-i586.exe python-2.7.8.amd64.msi cocos2d-x-3.2.zip apache-ant-1.9.4.zi ...

  10. android viewpager切换到最后一页时,跳转至其他activity

    许许多多的qpp,在启动时会显示一些帮助页或者产品介绍什么的,通常滑动到最后一页时会有一个开始体验的按钮,用来跳转到app的主activity上,但是如果没有? 可以通过如下方法实现: 1.为View ...