---恢复内容开始---html
from django.conf.urls import patterns, include, url from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'mysite.views.home', name='home'), # url(r'^blog/', include('blog.urls')), url(r'^admin/', include(admin.site.urls)), url(r'^$', 'mysite.views.first_page'), )
urls是网站URL映射,说明什么URL对应什么模块。 APP就是一个小型的WEB SERVER,python
render是将代码与模板对应起来,能够生成一套网页或者是响应。django
一个用户请求过来先到了project的urls.py上,而后检查URLS,找到对应app的urls.py,运行urls对应的模块编程
用render_to_response()简化views层windows
http://www.nowamagic.net/academy/detail/1318431app
from django.http import HttpResponse def hello(request): return HttpResponse("Hello NowaMagic")
每一个视图函数至少要有一个参数,一般被叫做request。 这是一个触发这个视图、包含当前Web请求信息的对象,是类django.http.HttpRequest 的一个实例。在这个示例中,咱们虽然不用 request 作任何事情,然而它仍必须是这个视图的第一个参数。函数
注意视图函数的名称并不重要;并不必定非得以某种特定的方式命名才能让 Django 识别它。 在这里咱们把它命名为:hello,是由于这个名称清晰的显示了视图的用意。一样地,你能够用诸 如:hello_wonderful_beautiful_world,这样难看的短句来给它命名。 在下一小节(Your First URLconf),将告诉你Django是如何找到这个函数的。性能
这个函数只有简单的一行代码: 它仅仅返回一个HttpResponse对象,这个对象包含了文本“Hello world”。网站
这里主要讲的是: 一个视图就是Python的一个函数。这个函数第一个参数的类型是HttpRequest;它返回一个HttpResponse实例。为了使一个 Python的函数成为一个Django可识别的视图,它必须知足这两个条件。 (也有例外,可是咱们稍后才会接触到。)url
from django.http import HttpResponse import datetime def hello(request): return HttpResponse("Hello NowaMagic") def current_datetime(request): now = datetime.datetime.now() html = "<html><body>It is now %s.</body></html>" % now return HttpResponse(html)
可是若是要import一个不一样目录的文件(例如b.py)该怎么作呢?
首先须要使用sys.path.append方法将b.py所在目录加入到搜素目录中。而后进行import便可,例如:
import sys sys.path.append('c:\xxxx\b.py') # 这个例子针对 windows 用户来讲的
面的代码有时会找不到模块或者包(ImportError: No module named xxxxxx),这是由于:
sys模块是使用c语言编写的,所以字符串支持 '\n', '\r', '\t'等来表示特殊字符。因此上面代码最好写成:
sys.path.append('c:\\xxx\\b.py') # 或者 sys.path.append('c:/xxxx/b.py')
这样能够避免由于错误的组成转义字符,而形成无效的搜索目录(sys.path)设置。
在前面了解过 Python 的序列,特别是 list 和 tuple 以后,咱们就能够解释一些 Python 里特有的一些编程技巧,额……好比多重赋值。
>>> t = 1,2,3 >>> t (1, 2, 3) >>> a,b,c = t >>> a 1 >>> b 2 >>> c 3
Python xrange与range的区别
xrange 用法与 range 彻底相同,所不一样的是生成的不是一个list对象,而是一个生成器。
>>> xrange(5) xrange(5) >>> list(xrange(5)) [0, 1, 2, 3, 4] >>> xrange(1,5) xrange(1, 5) >>> list(xrange(1,5)) [1, 2, 3, 4] >>> xrange(0,6,2) xrange(0, 6, 2) >>> list(xrange(0,6,2)) [0, 2, 4]
由上面的示例能够知道:要生成很大的数字序列的时候,用xrange会比range性能优不少,由于不须要一上来就开辟一块很大的内存空间。
for i in range(0, 100): print i for i in xrange(0, 100): print i
xrange 和 range 这两个基本上都是在循环的时候用。结果同样