django学习记录,windows下访问
刚刚不小心提到电源按钮,东西全没了~%>_<%~
昨天研究了一天,在linux系统下写好了东西,急于看效果,没认真看教材,最后在LILING同学的帮助下才在windows下看到了~
反过头复习一下就明白了意思。
---------------------------------------------------------------------------------------------------------------------------------------------------
你的第一个URL配置
这个视图方法返回了一个包含当前日期和时间的HTML页面
但是这些代码应该放在哪?怎样告诉Django使用这些代码呢?
第一个问题的答案是:你可以把view的代码放在任何位置,只要它是在你的Python PATH下,没有任何其他的要求----没有"魔术"。
我们将这些代码保存在views.py里面,并将views.py放在mysite目录下
Python PATH是一个你系统的目录列表,当你使用Python import语句时Python会查看这些目录
例如你的Python PATH设置成['', '/usr/lib/python2.4/site-packages', '/home/mycode']
如果你执行代码from foo import bar,Python将首先在当前目录下查找叫foo.py的模块
第一个Python PATH为空string,这表示当前目录
如果找不到foo.py,Python将尝试查找/usr/lib/python2.4/site-packages/foo.py
最后,如果foo.py还是找不到,Python将报ImportError
如果你有兴趣查看Python PATH,进入Python交互环境并输入import sys和print sys.path
一般来说你不必担心设置Python PATH,Python和Django会暗中自动为你做这些事情
如果你实在好奇,设置Python PATH是manage.py的一个工作
我们怎么告诉Django使用这些视图代码?答案是URL配置
URLConf就像是一张Django web站点的内容表格。基本上,这个配置是一个URL模式和对应的view函数的映射,这些函数会在请求某个符合特定模式的URL时被调用。
URLconf就是告诉Django,"对于这个URL,调用这些代码,对于那个URL,调用那些代码..."
URL配置就像是你的Django项目的目录
基本上,它是URL模式和URL模式调用的视图方法的映射
django-admin.py startproject会自动生成一个URL配置文件urls.py,默认情况下它是这样的:
- from django.conf.urls.defaults import *
- urlpatterns = patterns('',
- # Example:
- # (r'^mysite/', include('mysite.apps.foo.urls.foo')),
- # Uncomment this for admin:
- # (r'^admin/', include('django.contrib.admin.urls')),
- )
让我们来看看这些代码
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视图:
- from django.conf.urls.defaults import *
- form mysite.views import current_datetime
- urlpatterns = patterns('',
- (r'^now/$', current_datetime),
- )
于是就变成了这样.
我们做了两处改动。首先,我们从mysite/views.py模块import current_datetime视图
该模块在Python的import语法中被转换成mysite.views
然后我们增加一行(r'^now/
, current_datetime),它指向一个URL模式
这是一个Python元组,第一个元素是一个正则表达式,第一个是视图方法
这样,我们就告知Django对URL /now/的请求应该被current_datetime视图方法处理
注意几个地方:
1,在例子中,我们把视图方法current_datetime当成对象传递而不是调用这个方法
这是Python及其它动态语言的特性,函数是第一类对象,可以像其它变量一样传递,cool吧?
2,不必在'^now/
前面增加斜线来匹配/now/,Django自动在每个表达式前面添加斜线
3,'^'和'
符号很重要,前者表示“匹配string的开始的模式”,后者表示“匹配string结束的模式”
这个例子很好的解释了概念问题,如果我们使用模式'^now/',则/now/,/now/foo,/now/bar都将匹配
如果我们使用模式'now/
则/now/,/foo/bar/now/等也将匹配
所以我们使用'^now/
,则不多不少只有/now/匹配
现在测试一下我们对URLConf的修改。运行python manage.py runserver来启动Django的开发服务器
因为我是在linux服务器上,而且没有界面所以只好通过windows来访问,所以这里启动服务我写的是 python manage.py runserver 0.0.0.0:80,这样的话在windows下输入ip地址/now/就访问到了~
高兴~~~
(如果让它一直运行也没有问题,服务器会自动探测Python代码的修改,在必要的时候重新载入,所以没有必要一修改就重起)
浏览器访问http://127.0.0.1:8000/now/测试一下
万岁!你已经开发了你的第一个Django-powered Web页面
这个例子就到此为止了。