Django 开发第一个视图,Django的视图是负责页面展示的重要模块,用于处理网站业务逻辑。
打开polls/view.py文件,添加以下代码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Author : www.coolcou.com
from django.http import HttpResponse
def index(request):
return HttpResponse("你好! 这是酷客教程在线投票系统。")
这样,一个最简单的Django视图已经创建完成。为了能够访问它,需要在URL中添加路由映射。在polls中创建文件urls.py,并在urls.py文件中添加以下内容:
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Author : www.coolcou.com
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
提示
Path()方法可以接收4个参数,其中两个必选参数:route和view,另外两个是可选参数:kwargs和name。
接下来需要在根目录的urls.py中引用polls/urls.py
,修改mysite/urls.py
如下:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
上面代码中include()方法可以用来引用其他URLconfs (urls.py)。通过合理使用include()方法可以将整个网站中的所有URL分配到多个文件中,使代码更加简洁合理。
提示
除了admin.site.urls
之外,在任何时候都应该使用include()方法引用其他路由模块。
到目前为止,我们的Django工程中已经包含了一个视图。重新调用runserver命令启动Web服务,查看该视图是否能够正常工作。
在浏览器中输入“http://127.0.0.1:8000/polls/”,按Enter键,显示效果如图所示。
Django 2.0与Django 1.11的区别
在Django 1.11中使用url()方法创建URL映射,url()方法接收4个参数:
- regex
regex是正则表达式(regular expression)的简写,用于匹配字符串。Django将接收到的URL按照url pattern在urlpatterns中的顺写进行比较,直到找到第一个匹配的地址。
注意以上正则表达式不会比较GET或POST参数,也不会比较网站服务器名。例如对于请求https://www.example.com/myapp/
,URLconf只会匹配myapp/,而对于请求https://www.example.com/myapp/?page=3
也只会匹配myapp/。
由于以上正则表达式在URLconf第一次被加载时就会被编译完成,因此URLconf的正则表达式执行速度很快。 -
view
当Django找到了匹配的正则表达式后,Django会将一个HttpRequest对象作为第一个参数、其他正则表达式捕捉到的值作为第二个参数传递给指定的视图。如果正则表达式只进行简单捕捉的话,那么捕捉到的值将会作为位置参数进行传递;如果正则表达式按照名字捕捉值的话,那么捕捉到的值将会作为关键字参数进行传递。 -
kwargs
任何关键字参数都会作为字典传递给目标视图。 -
name
为URL进行命名,方便在Django项目的其他位置使用名字来引用URL。
注意
在Django 2.0中使用path()方法创建URL映射,path()方法同样接收4个参数:route、view、kwargs、name,除route参数外,其他3个参数的工作方式与Django 1.11
中url()方法的参数相似。route是一个包含URL模式的字符串,其工作方式与Django 1.11
中url()方法的regex相似,最主要的区别是route所使用的URL模式字符串可以指定参数类型。
酷客教程相关文章:
评论前必须登录!
注册