Django中url详解

url映射:

1,为什么Django中的所有url都写在urls.py文件中呢,又为什么Django 又会去urls.py中寻找映射呢?
因为在‘settings.py’文件中配置了’ROOT_URLCONF’为‘urls.py’。所以Django会去urls.py中寻找,而且我们也必须把所有的url写在urls.py文件中。
2,在’url.py’中所有的映射,都应该放在‘urlpatterns’这个列表中。
3,所有的映射不是随便写的,而是用‘path‘函数或者是’re_path’函数进行包装的。

url传参数:

1,url中使用变量的方式:在path的第一个参数中,使用==<参数名>==的方式可以传递参数。然后在views.py文件中的函数也要对应参数。
注意:views.py文件中的参数必须和url中的参数名称保持一致,否则会找不到参数。另外,url中是可以传递多个参数的。
示例代码:
views.py文件中

from django.http import HttpResponse

def book_detail(request,book_id):
    text = "你获取的图书id是:%s" % book_id
    return HttpResponse(text)

urls.py文件中:

from django.urls import path
from book import views

urlpatterns = [
	path('book/detail/<book_id>',views.book_detail),
	]

在浏览器中输入下面网址查看效果。

http://127.0.0.1:8000/book/detail/10

最后面的数值就是传递的参数,是可以随便改的。

2,采用 查询字符窜 的方式:在url中不需要单独写匹配查询字符窜的那部风,只需要在输入输入网址的时候最后面输入 ?参数名=参数值,中间也不能有空格,否则会获取不到想要获取的值。在views.py中的函数使用 request.GET.get('参数名称')或者request.GET.[参数名称]来获取
示例代码如下:

views.py中的代码

from django.http import HttpResponse

def author_detail(request):
    #author_id = request.GET['id']  两种方法获取参数
    author_id = request.GET.get('id')
    text = "作者的id是: %s" % author_id
    return HttpResponse(text)

urls.py中的代码

from django.urls import path
from book import views

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

运行项目,在浏览器中输入

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

就能够看到效果了,id后面的值也是可以改变的。

猜你喜欢

转载自blog.csdn.net/xujin0/article/details/83279984
今日推荐