python的Web开发之Django框架应用(二)
1、编写第一个静态页面
第一步,创建视图文件,代码如下:
from django.http import HttpResponse
def sayHello(request):
return HttpResponse("Hello world! This is my first trial. [Poll的笔记]")
第二步,进行URL配置。代码如下:
from django.conf.urls import url
from django.contrib import admin
from sayhello import views
urlpatterns = [
url(r'^sayHello/$',views.sayHello),
]
第三步,启动内置服务器,浏览器地址栏输入**http://127.0.0.1:8000/sayHello/**就能看到如下页面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FlsamgYA-1593526322056)(http://odsh9s4s2.bkt.clouddn.com/django-%E9%9D%99%E6%80%81%E9%A1%B5%E9%9D%A2.png)]
2、编写第一个动态页面
第一步,创建视图文件,代码如下:
import datetime
from django.http import HttpResponse
def sayHello(request):
s = 'Hello World!'
current_time = datetime.datetime.now()
html = '<html><head></head><body><h1> %s </h1><p> %s </p></body></html>' % (s, current_time)
return HttpResponse(html)
我们逐行分析一下这段代码:
首先,我们从django.http模块导入HttpResponse类。
接下来,我们定义一个叫做sayHello的视图函数。每个视图函数至少要有一个参数,通常被叫作request。这是一个触发这个视图、包含当前Web请求信息的对象,是类django.http.HttpResponse的一个实例。在这个示例中,我们虽然不用request做任何事情,然而它仍必须是这个视图的第一个参数。注意视图函数的名称并不重要;并不一定非得以某种特定的方式命名才能让Django识别它。
它仅仅返回一个HttpResponse对象,这个对象包含了页面上要显示的内容。
第二步,进行URL配置。代码如下:
from django.conf.urls import url
from django.contrib import admin
from sayhello import views
urlpatterns = [
url(r'^sayHello/$',views.sayHello),
]
我们逐行分析一下这段代码:
首先,我们从模块中引入了sayHello视图。
接下来,我们为urlpatterns加上一行: (r’^sayHello/$’,views.sayHello), 这行被称作URLpattern,它是一个Python的元组。元组中第一个元素是模式匹配字符串(正则表达式);第二个元素是那个模式将使用的视图函数。
urlpattern中包含了一个尖号(^)和一个美元符号($)。这些都是正则表达式符号,并且有特定的含义: 上箭头要求表达式对字符串的头部进行匹配,美元符号则要求表达式对字符串的尾部进行匹配。
简单来说,这段代码只是告诉Django,所有指向URL:/sayHello/的请求都应由sayHello这个视图函数来处理。
第三步,启动内置服务器,浏览器地址栏输入**http://127.0.0.1:8000/sayHello/**就能看到如下页面:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FxThR4O2-1593526322058)(http://odsh9s4s2.bkt.clouddn.com/django-%E9%9D%99%E6%80%81.png)]
可以看到页面的内容是我们每次访问页面的时间,是随时更新的。
总结一下:
- 进来的请求转入/hello/。
- jango通过在ROOT_URLCONF配置来决定根URLconf。
- Django在URLconf中的所有URL模式中,查找第一个匹配/hello/的条目。
- 如果找到匹配,将调用相应的视图函数。
- 视图函数返回一个HttpResponse。
- Django转换HttpResponse为一个适合的HTTP response,以Web page显示出来。
其实做一个Django-powered页面,只需要写视图函数并用 URLconfs把它们和URLs对应起来就ok了。