准备好好学习一下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代码如下:
  1. # coding=utf-8
  2.  
  3. from django.http import HttpResponse
  4. import datetime
  5.  
  6. def current_datetime(request):
  7. # 计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now
  8. now = datetime.datetime.now()
  9.  
  10. #构建Html响应,使用now替换占位符%s
  11. html = "<html><body>It is now %s.</body></html>" % now
  12.  
  13. #返回一个包含所生成响应的HttpResponse对象
  14. return HttpResponse(html)

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


三、URL映射

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

首先,我们从模块中引入了 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表达:
  1. from django.conf.urls import patterns, include, url
  2. from show_time.views import current_datetime hours_ahead
  3.  
  4. urlpatterns = patterns('',
  5. # Examples:
  6. # url(r'^$', 'time_test.views.home', name='home'),
  7. # url(r'^blog/', include('blog.urls')),
  8.  
  9. (r'^time/$', current_datetime),
  10. (r'^time/plus/(\d{1,2})/$', hours_ahead),
  11. #url(r'^admin/', include(admin.site.urls)),
  12. )

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

        现在开始写 hours_ahead 视图:
  1. # coding=utf-8
  2.  
  3. from django.http import HttpResponse
  4. import datetime
  5.  
  6. def current_datetime(request):
  7. # 计算当前日期和时间,并以 datetime.datetime 对象的形式保存为局部变量 now
  8. now = datetime.datetime.now()
  9.  
  10. #构建Html响应,使用now替换占位符%s
  11. html = "<html><body>It is now %s.</body></html>" % now
  12.  
  13. #返回一个包含所生成响应的HttpResponse对象
  14. return HttpResponse(html)
  15.  
  16. def hours_ahead(request, offset):
  17. offset = int(offset)
  18. dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
  19. html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
  20. 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. C程序练习

    1.编程从键盘任意输入两个时间(例如4时55分和1时25分),计算并输出这两个时间之间的间隔.要求不输出时间差的负号. #include<stdio.h> int main() { int ...

  2. JS中数组和字符串的方法大全

    数组的方法很多,ECMScript5又提供了好几种方法.有空把之前的云上的笔记整理了一下,方便自己以后查找使用. 一.ECMScript 3的Array.prototype中定义的方法 1.join( ...

  3. C# 异步转同步

    当我们的程序运行时,调用了一段异步的逻辑A,这段异步的逻辑无法转化为同步(如动画.下载进度等) 而,我们又需要等待异步逻辑A处理完成,然后再执行其它逻辑B. 那就迫切需要将异步转同步了! //参数bo ...

  4. HTML入门知识

    B/S:浏览器-服务器 C/S:客户端-服务器 更新麻烦 管理麻烦 PHP:基于BS结构进行项目开发的语言 ====================HTML:超文本标记语言 -- 控制网面内容CSS: ...

  5. C++笔记001:Microsoft Visual Studio 2010软件的安装与建立第一个cpp文件

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 我学习C++使用软件为Microsoft Visual Studio 2010. 首先,软件的安装包 链接:https://pan.bai ...

  6. ACM Self Number

    In 1949 the Indian mathematician D.R. Kaprekar discovered a class of numbers called self-numbers. Fo ...

  7. Swift基础之实现选择图片时,出现类似于ActionSheet的样式

    之前看到过有APP在选择图片时,调用手机相册时,将手机相册做成了左右滑动选择的效果,这次展示的就是这种样式,用OC语言已经有人实现过类似的代码,在这里写的仅仅是效果展示的代码调用,具体代码,可以自己研 ...

  8. TCP发送源码学习(2)--tcp_write_xmit

    一.tcp_write_xmit()将发送队列上的SBK发送出去,返回值为0表示发送成功.函数执行过程如下:1.检测拥塞窗口的大小.2.检测当前报文是否完全处在发送窗口内.3.检测报文是否使用nagl ...

  9. 大话XML解析

    之前我写过一篇关于xml解析的文章:http://blog.csdn.net/sdksdk0/article/details/50749326.今天这篇文章主要是进一步加深对xml基础的理解了使用,毕 ...

  10. Android基础知识点-Manifest清单文件

    每个应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误). 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码. ...