社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
# 示例
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.login_func),
url(r'^register/$', views.register_func),
]
url( )
方法的第一个参数其实是正则表达式, 一旦第一个参数匹配到了内容直接结束匹配, 并调用对应的视图函数"/"
, 因为每个 url 自带"r"
"/"
, 在第一次正则匹配机制没有匹配到想要的内容时, 会在匹配字符后加一个"/"
, 然后Django内部重定向在匹配一次"/"
"/"
一共匹配了两次# setting.py 文件
APPEND_SLASH = False # 默认 True 自动添加斜杠
建议自动添加
url( ) 方法中第一个参数正则表达式分组 : 给正则表达式前后加一个小括号
会将括号内正则表达式匹配到的内容当做位置参数传递给后边的视图函数
url(r'^login/$', views.login_func)
# 无名分组
url(r'^login/(d+)/$', views.login_func)
# 视图函数
def login_func(request,*args):
print(args)
return Httpresponse(args)
url(r'^login/$', views.login_func)
# 有名分组
url(r'^login/(?P<id>d+)/$', views.login_func)
# 视图函数
def login_func(request,**kwargs):
print(kwargs)
return Httpresponse(args)
url(r'^login/(d+)/(?P<id>d+)/$', views.login_func)
# 官方说不能混着用, 混着用只能取到有名分组捕获的值
# 只要不混着用,有名分组和无名分组支持多个相同类型的传参
url(r'^login/(d+)/(d+)/$', views.login_func)
url(r'^login/(?P<id>d+)/(?P<id>d+)/$', views.login_func)
# 路由层
url(r'^login/$', views.login_func,name='login_name')
# 前端中使用(模板层)
<a href="{% url 'login_name' %}">登入</a>
# 后端中使用(视图层)
from django.shortcuts import reverse
url = reverse('login_name')
ps : redirect( ) 括号内也可以直接写别名
url(r'^login/(d+)/', views.login_func,name='login_name')
from shortcuts import reverse
url = reverse('login_name',args=(1,)) # 随便给个数字
<a href="{% url 'login_name' 1 %}">登入</a> # 随便给个数字
路由层中分组匹配得到的数字并不是我们这样写死的, 一般情况下放的是数据的主键值, 我们可以通过获取到数据的主键.进而定位到数据对象, 从而可以对数据进行编辑和删除
# 路由层
url(r'^login/(d+)/', views.login_func,name='login_name')
# 视图层
def edit(request,edit_id):
reverse('login_name',args=(edit_id,))
# 模板层
{% for user_obj in user_list %}
<a href="{% url 'login_name' user_obj.id %}">kkk</a>
url(r'^login/(?P<id>d+)/', views.login_func,name='login_name')
from shortcuts import reverse
url = reverse('login_name',kwargs=(id:111)) # 随便给个数字
url= =
reverse('login_name',args=(111,)) # 也可以这样写
<a href="{% url 'login_name' id=111 %}">登入</a> # 随便给个数字
<a href="{% url 'login_name' 11 %}">登入</a> # 也可以这样写
由上面的视图层与模板层的第二种书写方式可以看出 : 无名有名都可以使用一种反向解析形式 : 就是无名反向解析
django是专注于开发应用的,当一个django项目特别庞大的时候, 所有的路由与视图函数映射关系全部写在一个 urls.py 里面很明显太冗余并且不便于管理
其实django中的每一个应用都可以有自己的 urls.py、static文件夹、templates文件夹, 基于上述特点, 使用django做分组开发非常的简便
每个人只需要写自己的应用即可, 最后由组长统一汇总到一个空的django项目中然后使用路由分发将多个应用关联到一起
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!