一. 什么是urls.py
urls.py是Django框架的url请求映射表
二. 文件常规位置
1. <Project文件夹> urls.py
2.<App文件夹> urls.py
三. 配置格式
urlpatterns = patterns('视图前缀', path(r'^正则表达式1/$', '视图函数1', name="url标识1"), path(r'^正则表达式2/$', '视图函数2', name="url标识2"), )
1. '视图前缀':可以为空
2. '^正则表达式1/$':url地址匹配
ip地址 | name | <MySite> urls.py | <Blog> urls.py |
http://localhost:8000/ | 网站首页 | path('',views.index) | 无 |
http://localhost:8000/Blog/ | 博客列表 | path('Blog/', included(Blog.urls)) | path('',views.Show_Blog_List,name="Blog_List") |
http://localhost:8000/Blog/1 | 博客内容 | path('<int:id>/',views.Show_Blog_Detail,name="Blog_Detail") |
3. '视图函数':为views.py中真是存在的函数
4. name:一个视图函数可能对应多个url请求,name作为该url引用的唯一标示,必须全局唯一。例如在网页模板中可以写如下的URL
#(1)带参数的 <a href="{% url '<name>' arg1 arg2 arg3 ...%}></a> #(2)不带参数的 <a href="{% url '<name>' %}"></a> # (3)以tag来确定参数的 <a href="{% url '<name>' <tag_name>=xxxx%}"></a>
例如:path('<int:id>/', views.show_BlogArticle_Detail, name='show_BlogArticle_Detail')
from django.urls import include, path from Blog import views urlpatterns = [ path('', views.show_BlogArticle_List, name='show_BlogArticle_List'), # blog_list.html: <a href="{% url 'show_BlogArticle_Detail' blog.id %}">{{ blog.title }}</a> path('<int:id>/', views.show_BlogArticle_Detail, name='show_BlogArticle_Detail') ]
def show_BlogArticle_Detail(request, id): # path('<int:id>/', views.show_BlogArticle_Detail, name='show_BlogArticle_Detail') blog_detail = get_object_or_404(BlogArticle, pk=id) # blog_detail.html: {{ blog_detail_html.title }} return render_to_response('blog_detail.html', {'blog_detail_html':blog_detail})
(1)'<int:id>/':
必须与views.show_BlogArticle_Detail(request, id)命名相同,
前端显示值对应blog_list.html: <a href="{% url 'show_BlogArticle_Detail' blog.id %}">{{ blog.title }}</a>
后端获取值对应views文件中show_BlogArticle_Detail(request, id)
(2)views.show_BlogArticle_Detail:
对应views.py中的函数show_BlogArticle_Detail(request, id)
(3)name='show_BlogArticle_Detail':
对应blog_list.html: <a href="{% url 'show_BlogArticle_Detail' blog.id %}">{{ blog.title }}</a>
四. url如何工作
客户端(浏览器url请求) --> 服务器 --> <Project文件夹> urls.py --> <App文件夹> urls.py --> <App文件夹> views.py --> 客户端(浏览器url请求)
注明:学习资料来自“再敲一行代码的个人空间”以及“杨仕航的博客”