django学习记录,动态web页面尝试
继续昨天的例子,创建了mysite后;
使用touch 命令创建了一个test.py,内容为:
1 from django.http import HttpResponse
2 import datetime
3 def current_datetime(request):
4 now = datetime.datetime.now()
5 html = "It is now %s." % now
6 return HttpResponse(html)
让我们来看看代码
1,首先,我们从django.http模块import HttpResponse类
2,然后,我们从Python标准库import datetime模块
datetime模块包含一些处理日期和时间的类和方法,并且包含一个返回当前时间的方法
3,然后,我们定义current_datetime方法
这是一个视图方法,它使用一个HttpRequest对象作为它的第一个参数
每个视图方法都使用HttpRequest对象作为自己的第一个参数
在这个方法里,我们把这个参数叫做request
Django并不关心视图方法的名字,我们也不必遵循某种特定的命名方式供Django鉴别。我们以current_datetime命名这个方法
纯粹是因为它正好可以明确的表达方法的意图,你可以任意地命名view方法,current_datetime清楚的表明了它会做什么事情
一会我们会解释Django怎样找到这个方法
4,该方法的第一行代码计算当前日期和时间,并存储在本地变量now中
5,该方法的第二行代码使用Python的格式化string能力构建了一个HTML应答
string里面的%s是一个占位符,string后面的百分号表示使用now变量的值代替%s
(给html纯化论者们:我们没有写DOCTYPE申明,没有<head>标签,等等等等,我们只是尽量让这个页面简洁明了。)
6,最后,视图返回一个包含生成的HTML的HttpResponse对象
每个视图方法都会返回一个HttpResponse对象,例外的情况我们后面会解释。 - -|||
如果你有兴趣查看Python PATH,进入Python交互环境并输入import sys和print sys.path
一般来说你不必担心设置Python PATH,Python和Django会暗中自动为你做这些事情
我的显示:
1 >>> import sys
2 >>> print sys.path['', '/usr/lib/python2.5', '/usr/lib/python2.5/plat-linux2', '/usr/lib/python2.5/lib-tk', '/usr/lib/python2.5/lib-dynload', '/usr/local/lib/python2.5/site-packages', '/usr/lib/python2.5/site-packages', '/var/lib/python-support/python2.5']
django-admin.py startproject会自动生成一个URL配置文件urls.py,默认情况下它是这样的:
1 from django.conf.urls.defaults import *
2 urlpatterns = patterns('',
3 # Example:
4 # (r'^mysite/', include('mysite.apps.foo.urls.foo')),
5
6 # Uncomment this for admin:
7 # (r'^admin/', include('django.contrib.admin.urls')),
8 )
让我们来看看这些代码
1,第一行import django.conf.urls.defaults模块的所有对象,包括一个叫patterns的方法
2,第二行调用patterns()方法并将接过保存到urlpatterns变量,patterns()方法只传了一个空string作为参数
其它行被注释掉了
这里主要看的就是变量urlpatterns,它定义了URL和处理URL的代码的映射
默认情况下所有的URL配置被注释掉了,这意味着你的Django项目是空的,这让Django得知显示“It worked!”页面
如果你的URL配置是空的,Django假设你刚开始一个新的项目,这样就显示这条信息
让我们编辑urls.py来暴露current_datetime视图:
最后改成了这样:
1 from django.conf.urls.defaults import*
2 form mysite.test import current_datetime
3 #Uncomment the next two line to enable the admin:
4 #from django.contrib import admin
5 #admin.autodiscover()
6
7 urlpatterns = patterns(' ',
8 (r'^now/$', current_datetime),
9 #Example:
10 # (r'^mysite/', include('mysite.foo.urls')),
11
12 #Uncomment the admin/doc line below and add 'django.contrib.admindocs'
13 #to INSTALLED_APPS to enable admin documentation:
14 # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
15
16 #Uncomment the next line to enable the admin:
17 # (r'^admin/(.*)', admin.site.root),
linux下的就到此为止了,其实还是在重复昨天的事情..