Django --- URL视图

1 视图:一般写在app的views.py中。并且视图的第一个参数永远都是request(一个HttpRequest)对象。视图函数的返回结果必须是HttpResponseBase对象或者子类的对象。

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def book(request):
    return HttpResponse('图书首页')

2 URL映射:用户输入某个url,请求到我们网站的时候,django会从项目的urls.py文件中寻找对应的视图。

from django.contrib import admin
from django.urls import path
from book import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('book/', views.book)
]

3 URL中添加参数:可以在path函数中,使用尖括号的形式来定义一个参数。

views.py
def book_detail(request,book_id,category_id):
    text = '您获取的图书id是%s,图书分类是%s'%(book_id, category_id)
    return HttpResponse(text)
urls.py
path('book/detail/<book_id>/<category_id>', views.book_detail),

采用查询字符串的方式:在url中,不需要单独匹配查询字符串部分。只需要在视图函数中使用‘request.GET.get(‘参数名称’)’的方式。

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

http://127.0.0.1:8000/book/author/?id=1

4 url命名与反转url
—为什么需要url命名?—
因为url是经常变化的。如果在代码中写死可能会经常改代码。给url取个名字,以后使用url的时候就使用他的名字进行反转就可以了,就不需要写死url了。

—如何给一个url指定名称?—
在‘path’函数中,传递一个‘name’参数就可以指定。

urlpatterns = [
    path('', views.index,name = 'index'),
    path('login/', views.login,name ='login')
]

—应用命名空间—
在多个app之间有可能产生同名的url。这时候为了避免反转url的时候产生混淆,可以使用应用命名空间来做区分

urls.py
app_name = 'front'

views.py
return redirect(reverse('front:login'))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值