Django框架使用流程(五)

开发流程的学习,用于快速熟悉Django框架各个模块

一、路由

在Django中,定义一个路由配置需要包括正则表达式、视图两部分

Django使用正则表达式匹配请求的URL

一旦匹配成功,则调用应用的视图

如果在正则表达式中有正则分组,则会将正则分组匹配内容作为实参传递给视图函数

注意:只匹配路径部分,即除去域名、端口后的字符串

path('admin/', admin.site.urls)

admin为django自带后台管理路由

1,path 通常绑定应用路由列表

from django.urls import path,include
# 使用path将booktest的路由 进行包含
path('booktest/', include('booktest.urls'))

注意:此处需要在booktest应用下手动创建urls

并且在urls中必须使用 urlpatterns 声明应用路由数组

2,url 通常绑定应用中具体路由

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'^index/$',views.index),
]

一个project中如果有多个应用,为避免url管理可能的混乱,在项目的urls.py用include方法包含应用中的urls

二、视图

Django中编写视图可以使用视图函数(FBV)与视图类(CBV)两种方式

在开发流程中我们仅介绍基于函数的视图,后面课程中会介绍基于类的视图

在应用的view.py中可以编写应用中路由绑定的视图

视图接收reqeust对象作为第一个参数,包含了请求的信息

request参数必不可少

其他参数可根据需求添加(如果视图所绑定的路由中有正则分组,则需要为该分组提供形参)

from django.shortcuts import render
from .models import Book
def index(request):
    books = Book.objects.all()
    # 在渲染模板的时候传递 books参数  在模板中可以解析books
    return render(request,'index.html',{"books":books})

render函数介绍:

render函数内部封装了加载模板文件的流程

实现原理

# 1获取模板
template = loader.get_template('index.html')
# 2渲染模板数据
books = Book.objects.all()
context = {"books": books}
result = template.render(context)
# 3将渲染结果使用httpresponse返回
return HttpResponse(result)

三、带参数路由与视图

在应用路由中使用正则分组为视图函数提供实参

在应用的urls.py中编写

from django.conf.urls import url
from . import views
urlpatterns = [
    url(r'detail/(\d+)/',views.detail),
    # 如果正则分组使用了别名,形参一定要是bid
    # url(r'detail/(?P<bid>\d+)/',views.detail),
]

在应用的views.py中编写

from django.shortcuts import render
from .models import Book
def detail(request,bookid):
# 如果正则分组使用了别名,形参一定要是bid
# def detail(request,bookid):
    book  = Book.objects.get(id=bookid)
    return render(request,'detail.html',{"book":book})

在这里插入图片描述

发布了14 篇原创文章 · 获赞 4 · 访问量 9128

猜你喜欢

转载自blog.csdn.net/zhangzhaoyuxunlei/article/details/104729565