页面的内容是靠view function 视图函数来产生,URL定义在 URLconf 中。
插曲看文件搜索路径
import sys
print sys.path
['C:\\Program Files\\JetBrains\\PyCharm Community Edition 2017.1.4\\helpers\\pydev',
'C:\\Program Files\\JetBrains\\PyCharm Community Edition 2017.1.4\\helpers\\pydev',
'C:\\WINDOWS\\SYSTEM32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win',
'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages',
'C:\\Users\\chinalife-pc\\PycharmProjects\\mysite', 'C:/Users/chinalife-pc/PycharmProjects/mysite']
1.mysite文件夹中,创建一个叫做views.py
from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello NBMIS")
2.修改urls.py
由于diango升级了,所以和原书有些出入。 当然小差异不影响大思想,所以还是坚定地看完演练完。
https://stackoverflow.com/questions/38786461/django-error-your-url-pattern-is-invalid-ensure-that-urlpatterns-is-a-list-of
from django.conf.urls import url
from django.contrib import admin
from mysite.views import hello
urlpatterns = [ url(r'^admin/', admin.site.urls),
url(r'^hello/$', hello),
]
万岁! 你已经创建了第一个Django的web页面。
我们再处理个网站根目录,在不同文件中分别定义下述内容(文件名不复述了,同上)
from mysite.views import hello,homeview
urlpatterns = [ url(r'^admin/', admin.site.urls),
url(r'^hello/$', hello),
url(r'^$', homeview),
]
===================================
def homeview(request):
return HttpResponse("rabbit home")
我们来个动态的吧,显示当前时间,我们在view.py中修改
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
from mysite.views import hello,homeview,current_datetime
urlpatterns = [ url(r'^admin/', admin.site.urls),
url(r'^hello/$', hello),
url(r'^$', homeview),
url(r'^time/$', current_datetime),
]
让我们创建第三个视图来显示当前时间和加上时间偏差量的时间,实质是演示一种查询字符串的使用方法。
设计是这样的: /time/plus/1/ 显示当前时间+1个小时的页面 /time/plus/2/ 显示当前时间+2个小时的页面
from django.http import Http404, HttpResponse
import datetime
def hours_ahead(request, offset):
try:
offset = int(offset)
except ValueError:
raise Http404()
dt = datetime.datetime.now() + datetime.timedelta(hours=offset)
html = "<html><body>In %s hour(s), it will be %s.</body></html>" % (offset, dt)
return HttpResponse(html)
urlpatterns = [ url(r'^admin/', admin.site.urls),
url(r'^hello/$', hello),
url(r'^$', homeview),
url(r'^time/$', current_datetime),
url(r'^time/plus/(\d{1,2})/$', hours_ahead),
]
最后,指出一个调试模式输出网页配置(默认)
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True