Django url路由分配
# Django2.x以后url路由由path和re_path代替 urlpatterns = [ path('admin/', admin.site.urls), path:完全匹配 path('show_time/', views.show_time),访问路径:127.0.0.1:8000/show_time url(r'dte/(\d{4})/(\d{2})/(\d{2})', views.dte), url:正则匹配,访问路径:127.0.0.1:8000/dte/1234/12/12 re_path(r'dte/(?P<yeas>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', views.dte), re_path:正则匹配 ]
无命名分组
url(r'dte/(\d{4})/(\d{2})/(\d{2})', views.dte), #()在正则中表示分组,只有分组后的才会作为参数传递 #该映射路径中有三个分组,对应其视图函数必须接受三个参数 def dte(req, yeas, month, day): return render(req, 'index1.html', {'yeas': yeas, 'month': month, 'day': day})
命名分组
re_path(r'dte/(?P<yeas>\d{4})/(?P<month>\d{2})/(?P<day>\d{2})', views.dte), # 命名分组参数名必须一一对应 def dte(req, yeas, month, day): return render(req, 'index1.html', {'yeas': yeas, 'month': month, 'day': day})
简单的get提交案例:
# url映射 re_path(r'login', views.login),
# 视图逻辑 def login(request): print(request.GET.get('name'))
print(request.GET.get('age')) return render(request, 'login.html')
<!-- 页面--> <h1>学生注册</h1> <form action="/login/" method="get"> <p>姓名:<input type="text" value="" name="name"></p> <p>年龄:<input type="text" value="" name="age"></p> <p>住址:<input type="text" value="" name="address"></p> <button type="submit">搜索</button> </form>
分析:当地址栏输入访问地址
当输入内容点击提交后:
当表单提交后后台接收提交的数据后继续返回该页面
当表单提交的方式是post的时候:
<form action="/login/" method="post"> <p>姓名:<input type="text" value="" name="name"></p> <p>年龄:<input type="text" value="" name="age"></p> <p>住址:<input type="text" value="" name="address"></p> <button type="submit">搜索</button> </form>
此时Django会报一个错误
此时在Django的setting中奖Django的安全机制暂时关闭
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', #'django.middleware.csrf.CsrfViewMiddleware', Django的安全检测 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
注:上面关闭不提倡,提倡使用{%csrf_token%}
然后提交请求就可以了,下面是面板日志:
请求别名:
re_path(r'login', views.login, name='log'),
<form action="{%url 'log'%}" method="post"> <p>姓名:<input type="text" value="" name="name"></p> <p>年龄:<input type="text" value="" name="age"></p> <p>住址:<input type="text" value="" name="address"></p> <button type="submit">搜索</button> </form>
路由分发
- 在应用文件夹底下创建自己的urls.py文件
# 全局urls中 urlpatterns = [ path('admin/', admin.site.urls), path('show_time/', views.show_time), re_path(r'login', views.login, name='log'), # 将属于应用的url指派到应用,让其在应用的问价夹下参与映射 re_path(r'app/', include("Django_app.urls")) ]
# 应用urls中 urlpatterns = [ re_path(r'seetl', views.seetl), ]
- 访问结果
小白技术分享