下面是详细的“Python之Django路由和视图案例教程”的完整攻略及两条示例说明。
1. Django路由
Django路由定义了请求URL与视图函数之间的映射关系,是实现RESTful架构的重要组成部分。
1.1 url()函数
url()函数是Django用来声明URL映射关系的函数。它的原型是:
url(regex, view, kwargs=None, name=None)
其中,regex表示URL的匹配模式,view表示对应的视图函数,kwargs是传递给视图函数的参数,name是该URL的名称,方便在视图函数或模板中使用。
1.2 path()函数
path()函数是Django提供的新的URL映射函数,它相比url()函数更加简洁易用。其原型为:
path(route, view, kwargs=None, name=None)
其中,route表示URL的匹配模式,view表示对应的视图函数,kwargs是传递给视图函数的参数,name是该URL的名称,方便在视图函数或模板中使用。
1.3 示例说明
例1:匹配单个URL
当用户访问http://example.com/myapp/ 时,Django应该调用myapp.views.index函数来处理该请求。
使用url()函数实现:
from django.conf.urls import url
from myapp import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
使用path()函数实现:
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.index, name='index'),
]
例2:匹配多个URL
当用户访问http://example.com/myapp/list/ 时,Django应该调用myapp.views.list函数来处理该请求;当用户访问http://example.com/myapp/detail/1/ 时,Django应该调用myapp.views.detail函数来处理该请求。
使用url()函数实现:
from django.conf.urls import url
from myapp import views
urlpatterns = [
url(r'^list/$', views.list, name='list'),
url(r'^detail/(?P<id>\d+)/$', views.detail, name='detail'),
]
使用path()函数实现:
from django.urls import path, re_path
from myapp import views
urlpatterns = [
path('list/', views.list, name='list'),
re_path(r'^detail/(?P<id>\d+)/$', views.detail, name='detail'),
]
2. Django视图
Django视图处理请求并返回响应。视图可以定义为函数或类。
2.1 函数视图
函数视图是定义为函数的视图。
2.2 类视图
类视图是定义为类的视图。
类视图常见的有以下几种:
- TemplateView:渲染模板响应视图。
- ListView:渲染列表响应视图。
- DetailView:渲染详情响应视图。
- FormView:处理表单响应视图。
2.3 示例说明
例1:函数视图
定义函数视图myapp.views.index,用来处理首页请求,返回一个包含"Hello World"字样的响应。
from django.http import HttpResponse
def index(request):
return HttpResponse('Hello World')
例2:类视图
使用TemplateView渲染index.html模板响应视图。
from django.views.generic import TemplateView
class IndexView(TemplateView):
template_name = 'index.html'
使用ListView渲染article_list.html模板响应视图,用于显示文章列表。
from django.views.generic import ListView
from myapp.models import Article
class ArticleListView(ListView):
model = Article
template_name = 'article_list.html'
context_object_name = 'article_list'
paginate_by = 10
以上就是“Python之Django路由和视图案例教程”的完整攻略及两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python之django路由和视图案例教程 - Python技术站