BAE博客开发之基础知识积累----Django篇(1)

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)),

)

 

 

你可能感兴趣的:(django)