1 视图概念
2 创建视图
# 第一步:创建视图文件(views.py)并编写视图函数from django.http import HttpResponsedef test(request):# 处理请求text = "<a href=\"https://www.baidu.com\">点我跳转</a>"# 处理响应return HttpResponse(text)
3.路由的使用
第一步:导入视图函数 from . import views第二步:编写path方法 path('test/', views.test),第三步:资源访问 http://127.0.0.1:8000/test/
# 第一步:settings.py注册路由,在INSTALLED_APPS中加入创建的APP名称# 第二步:注册主路由 path('learning/', include('项目app.urls'))# 第三步:在APP下创建路由# 第四步:资源访问 http://127.0.0:8000/learning/test/
# 编写视图函数from django.http import HttpResponsedef learn(request, name):return HttpResponse(f"学习{name}课程")# 创建路由path('learn/<name>', views.learn),# 资源访问http://127.0.0.1:8000/learn/python
# 创建路由path('learn/<str:name>', views.learn),# 资源访问http://127.0.0.1:8000/learn/python
# 创建路由re_path('test/', views.test)re_path('^test/$', views.test)re_path('learn/(?P<name>[0-9]+)', views.learn),# 资源访问http://127.0.0.1:8000/1111test/http://127.0.0.1:8000/test/http://127.0.0.1:8000/learn/123455
需求:让不同的函数增加时间功能
from django.shortcuts import renderfrom django.http import HttpResponseimport timedef test1(request):flag = Trueif flag:nowtime = time.asctime(time.localtime(time.time()))return HttpResponse(f'test1{nowtime}')else:return HttpResponse(f'test1')def test2(request):flag = Trueif flag:nowtime = time.asctime(time.localtime(time.time()))return HttpResponse(f'test2{nowtime}')else:return HttpResponse(f'test2')
通过版本一可以发现,如果函数批量添加,需要重复进行同一个操作,代码冗余。
from django.shortcuts import renderfrom django.http import HttpResponseimport timedef test1(request, **kwargs):if kwargs.get('time'):nowtime = time.asctime(time.localtime(time.time()))return HttpResponse(f'当前时间:{nowtime}')else:return HttpResponse('无时间显示')def test2(request, **kwargs):if kwargs.get('time'):nowtime = time.asctime(time.localtime(time.time()))return HttpResponse(f'当前时间:{nowtime}')else:return HttpResponse('无时间显示')# 路由配置from django.urls import pathfrom . import viewsurlpatterns = [path('test1/', views.test1, {'time': 'Ture'}),path('test2/', views.test2, {'time': 'Ture'}),]
通过版本二,可以发现,我们可以通过**kwargs来获取判定结果,再以分路由来实现需要的功能,也可以通过主路由的配置来实现功能的实现,可以根据需求适当的变更。
from django.shortcuts import renderfrom django.http import HttpResponseimport timedef test1(request, **kwargs):message = '当前时间:'if kwargs.get('time'):message += time.asctime(time.localtime(time.time()))return HttpResponse(message)def test2(request, **kwargs):message = '当前时间:'if kwargs.get('time'):message += time.asctime(time.localtime(time.time()))return HttpResponse(message)
