在上一个项目,我们创建了一个名为myproject的虚拟环境,并在里面创建了一个 my_one的django项目,以及一个 my_app1 的 Django app。
- Django 的 MTV 架构,我们先来看看这个:
a1.png
1.浏览器送出 HTTP request
2.Django 依据 URL configuration 分配至对应的 View
3.View 进行资料库的操作或其他运算,并回传 HttpResponse物件
4.浏览器依据 HTTP response 显示网页页面
下面我们将实践这四个步骤:
- 发出一个HTTP request, http://127.0.0.1:8000/hello/
2.Django 依据 URL configuration 分配至对应的 View,注意我们提前要在view中的操作:
# my_app1/views.py
from django.http import HttpResponse
#从django.http模块中引用 HttpResponse
def hello_world(request):
return HttpResponse("Hello World!")
- 宣告 hello_world这个view,就是一个函数
- 当 hello_world被呼叫时,回传包含字符串 HelloWorld! 的 HttpResponse 物件。
3.那么当我们访问1中的url,怎样才会触发到2中的hello_world(),并返回值呢?很显然,我们需要一个桥梁来连接两边。
这就是Django URL,有人浏览 http://127.0.0.1:8000/hello/ 时 ,hello_world()这个view function 需要被执行,而这个对应关系就是 URL conf (URL configuration)。
现在我们来设定 Hello World 范例的 URL conf。
# my_one/urls.py
from django.conf.urls import include, url
from django.contrib import admin
# Import view functions from trips app.
from my_app1.views import hello_world
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^hello/$', hello_world),
]
- 以上程式透过 url() function传入两个参数 regex, view:url(regex, view)
regex -- 定义的 URL 规则
规则以 regular expression(正则表达式)来表示
r'^hello/$'代表的是 hello/这种 URL
view -- 对应的 view function
指的是 hello_world这个 view
4.浏览器的页面显示:
hello world!
网友评论