django开发系列:url映射

django开发系列:url映射

url映射:

  1. 为什么会去urls.py文件中寻找映射呢?
    是因为在settings.py文件中配置了ROOT_URLCONFurls.py。所有django会去urls.py中寻找。
  2. urls.py中我们所有的映射,都应该放在urlpatterns这个变量中。
  3. 所有的映射不是随便写的,而是使用path函数或者是re_path函数进行包装的。

url传参数:

  1. 采用在url中使用变量的方式:在path的第一个参数中,使用<参数名>的方式可以传递参数。然后在视图函数中也要写一个参数,视图函数中的参数必须和url中的参数名称保持一致,不然就找不到这个参数。另外,url中可以传递多个参数。
    urls.py文件代码:
def index(request):
    return HttpResponse("首页")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',index),
    path('book/',views.book),
    path("book/detail/<book_id>/<category_id>/",views.book_detail)
]

对应app中views.py代码:

def book(request):
    return HttpResponse("图书首页")
    
def book_detail(request,book_id,category_id):
    # 可以从数据库中根据book_id提取这个图书的信息
    text = "您获取的图书id是:%s,图书分类是%s" % (book_id,category_id)
    return HttpResponse(text)
  1. 采用查询字符串的方式:在url中,不需要单独的匹配查询字符串的部分。只需要在视图函数中使用request.GET.get('参数名称')的方式来获取。
    urls.py文件代码:
def index(request):
    return HttpResponse("首页")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',index),
    path('book/author/',views.author_detail),
]

对应app中views.py代码,http请求为:http://127.0.0.1:8000/book/author/?id=2/.

def author_detail(request):
    author_id = request.GET['id']
    text = '作者的id是:%s' % author_id
    return HttpResponse(text)

因为查询字符串使用的是GET请求,所以我们通过request.GET来获取参数。并且因为GET是一个类似于字典的数据类型,所有获取值跟字典的方式都是一样的。

url参数的转换器,限定参数类型:

  1. str:除了斜杠/以外所有的字符都是可以的。
  2. int:只有是一个或者多个的阿拉伯数字。
  3. path:所有的字符都是满足的。
  4. uuid:只有满足uuid.uuid4()这个函数返回的字符串的格式。
  5. slug:英文中的横杆或者英文字符或者阿拉伯数字或者下划线才满足。
    urls.py文件代码:
from django.contrib import admin
from django.urls import path
from book import views
from django.http import HttpResponse
from django.urls import converters

def index(request):
    return HttpResponse("首页")

urlpatterns = [
    path('admin/', admin.site.urls),
    path('',index),
    path('book/author/',views.author_detail),
    path("book/publisher/<int:publisher_id>/",views.publisher_detail)
]

对应app中views.py代码:

def publisher_detail(request,publisher_id):
    text = '出版社的id是:%s' % publisher_id
    return HttpResponse(text)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值