赵乐ACM

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1. Django如何新建一个网站

python django-admin.py startproject mysite

在mysite文件夹下会生成如下文件:

mysite/
    manage.py
    mysite/
        settings.py
        urls.py
        __init__.py
        wsgi.py

启动网站

python manage.py runserver
python manage.py runserver 8080 #修改端口号,默认的是8000
python manage.py runserver 0.0.0.0:8000 #告诉服务器去监听任意端口

2. Django是怎么工作的

1. 进来的请求转入/hello/;

2. Django通过settings.py中ROOT_URLCONF配置来获得URLconf;

3. Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目;

4. 如果找到,调用相应的视图

5. 视图函数会返回一个HttpResponse对象

6. Django转换HttpResponse为一个适合的HTTP response, 以Web page显示出来

3. Django的View

添加网页,需要修改两个文件。一是urls.py,二是views.py。urls.py将url和view中的函数对应。views定义函数,返回httpresponse对象。

动态URL。比如./time/plus/3/、./time/plus/4/、./time/plus/5/ ...这种,需要再urls.py中添加正则表达式来匹配这种URL,前面的URL可以用如下正则表达式表达

(r'^time/plus/(\d{1,2})/$', hours_ahead)

在views.py中添加hours_ahead(httprequest, offset)。注意这里offset会从匹配的URL里提取出来的。并且要转换为str。

4. 贴出代码:

views.py

View Code
# _*_ coding:utf-8 _*_
from django.http import HttpResponse
import datetime

def hello(request):
    return HttpResponse("Hello World!")

def date(request):
    return HttpResponse("<html><body>It is " + str(datetime.datetime.now()) + ".</body><html>")

def hours_ahead(request, offset): #这里的offset会自动从匹配的URL中获得
    try:
        offset = int(offset)
    except ValueError:
        raise Http404()

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

urls.py

View Code
# _*_ coding:utf-8 _*_
from django.conf.urls import patterns, include, url
from mysite.views import *

# Uncomment the next two lines to enable the admin:
# from django.contrib import admin
# admin.autodiscover()

urlpatterns = patterns('', 
    ('^hello/$', hello),
    ('^time/$', date),
    ('^time/plus/(\d{1,2})/$', hours_ahead), #/time/plus/3/这种URL
    # Examples:
    # url(r'^$', 'mysite.views.home', name='home'),
    # url(r'^mysite/', include('mysite.foo.urls')),

    # Uncomment the admin/doc line below to enable admin documentation:
    # url(r'^admin/doc/', include('django.contrib.admindocs.urls')),

    # Uncomment the next line to enable the admin:
    # url(r'^admin/', include(admin.site.urls)),
)

 

 

posted on 2013-03-18 21:13  赵乐ACM  阅读(1483)  评论(0编辑  收藏  举报