Django框架(之二)URL与视图

在这里插入图片描述

Django框架(之二)URL与视图

一、视图

  • 视图一般都写在app的views.py中。并且视图的第一个参数永远都是request(一个HttpRequest)对象。这个对象存储了请求过来的所有信息,包括携带的参数以及一些头部信息等。在视图中,一般是完成逻辑相关的操作。
  • views.py
    在这里插入图片描述
  • urls.py
    在这里插入图片描述

二、URL映射和添加参数

  • 可以在path函数中,使用尖括号的形式来定义一个参数,从而使一些参数可以做动态调整
    在这里插入图片描述
    在这里插入图片描述
  • 结果
    在这里插入图片描述

三、URL模板化和转换器

1.定义:URL中包含另外一个urls模块,在我们的项目中,不可能只有一个app,如果把所有的app的views中的视图都放在urls.py中进行映射,肯定会让代码显得非常乱。因此django给我们提供了一个方法,可以在app内部包含自己的url匹配规则,而在项目的urls.py中再统一包含这个app的urls。使用这个技术需要借助include函数。

  • book.url
    在这里插入图片描述
  • 总URL
    在这里插入图片描述
  • 成果
    在这里插入图片描述
  • 转换器
from django.urls import converters

四、url命名与反转

  • 原因
    因为在项目开发的过程中URL地址可能经常变动,如果写死会经常去修改
path("",views.index,name="index")
  • 应用命名空间
  • 一个app,可以创建多个实例。可以使用多个URL映射同一个App。
from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('cms1/', include("cms.urls",namespace='cms1')),
    path('cms2/', include("cms.urls",namespace='cms2')),
    path('front/', include("front.urls")),
]

在这里插入图片描述

  • 实例命名空间
  • 在做反转的时候,如果使用应用命名空间,就会发生混淆,为了避免这个问题,可以使用实例命名空间,实例命名空间使用,namespace=‘实例命名空间’

五、URL反转传递参数

  • 如果这个url中需要传递参数,那么可以通过kwargs来传递参数。
reverse("book:detail",kwargs={"book_id":1}
  • 因为django中的reverse反转url的时候不区分GET请求和POST请求,因此不能在反转的时候添加查询字符串的参数。如果想要添加查询字符串的参数,只能手动的添加。
login_url = reverse("front:singin") + "?name=jr"
return redirect(login_url)

六、指定默认参数

  • 项目views
from django.http import HttpResponse
article_lists = ["a","b","c"]
def article(request):
    return HttpResponse(article_lists[0])

def page(request,page_id=0):
    return HttpResponse(article_lists[page_id])
  • 总url
from django.urls import re_path,path
from . import views
urlpatterns = [
    path("",views.article),
    path("page/",views.page),
    path("page/<int:page_id>",views.page),
]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值