有的时候我们需要用一个函数处理多个URL
# 2.X以后变为
urlpatterns = [
path('admin/', admin.site.urls),
path('baidu/', views.baidu),
path('login/', views.login),
path('baidu/2003/', views.baidu),
path('baidu/2004/', views.baidu),
re_path(r'^baidu/[0-9]{4}/$', views.baidu),
]
如果在路径内想要使用正则表达式进行匹配的话,2.X以后变为需要进行导入
from django.urls import re_path
如下写完,下面的URL效果是一个的
如果要在后台修改URL的同时,不修改前端的提交地址,那么就可以用别名的方法
前端:
<h1>{% url "gf" %} 是一个固定的写法 gf是别名</h1>
<form action="{% url "gf" %}" method="post">
<input type="text" name="user">
<input type="password" name="pwd">
<input type="submit" value="submit">
</form>
urls.py
# path("login/",views.login),
path("login/aa/",views.login,name="gf"), # 访问时要写login/aa/ 但是前端就不用在进行修改了。
路由分发:从全局的分配URL中分离出来,放在自己的APP下
from django.urls import include
path('blog/', include('blog.urls')),
views.py视图文件中,如果有多个变量要返回给前端那么可以使用 locals()方法
def userInfo(request):
if request.method=="POST":
u=request.POST.get("username",None)
s=request.POST.get("sex",None)
e=request.POST.get("email",None)
return render(request,"index.html",locals()) # 注意这里,这样以后前端可以直接在{{u}}来使用了。
重定向 redirect()方法
return redirect("http://wwww.baidu.com") # 如登录成功和失败时用到。