django学习框架之3:URL路由反转传递参数,指定默认参数

  • URL反转传递参数:
    URL反转:reverse:
    反转路由信息:因为django中的reverse反转url的时候不区分GET请求和POST请求,因此不能在反转的时候添加查询字符串的参数。如果想要添加查询字符串的参数,只能手动的添加。
    重定向时要
    可以用于在重定向前,用作将指定的路由进行反转和拼接,拼接时使用的参数通过kwargs传递
    例子:
    cms.views中定义index函数,进行相关的反转
def index(request):
    name = request.GET.get('name')
    if name:
        return HttpResponse('后台首页')
    else:
        # return redirect('login/')
        # return redirect('cms:login')
        return redirect(reverse('cms:news',kwargs={'news_id':1}))
    # 测试两种方式:字符串拼接和在重定向中传递参数,发现不行,因为返回的是路由,要加入的话需要在reverse中加入,要在反转后再加入会出问题,不能识别这个news_id,重定向不具备识别news_id的功能
def news(request,news_id):
    return HttpResponse('新闻是%s' %news_id)

cms.urls

from django.urls import path
from . import views

app_name = 'cms'
# 命名空间  app_name是唯一的,这就代表这个app的名称
urlpatterns = [
    path('',views.index),
    # path('login/',views.login),
    path('sign/',views.login,name='login'),
    path('news/<news_id>',views.news,name='news'),
]
  • URL指定默认参数
    比如对于一个视图news.views,代码如下:
from django.shortcuts import render,redirect,reverse
from django.http import HttpResponse
# Create your views here.

def index(request,page=1):
    return HttpResponse('新闻第%s篇' % page)

其中就指定了page=1为默认的参数,
在news.urls中调用的方式:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index),
    path('<page>',views.index),
]

这里会在路由中指定两个,一个是传递参数的就使用第二个路由path('<page>',views.index),,不传递的就使用第一个路由path(' ',views.index),
注意写代码时,路由后面的逗号必须添加
最后,在添加新的蓝图后,需要将新的路由加入到总的路由之中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值