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),
    ]
  • 访问结果

 

posted @ 2020-11-12 15:22  过氧化氢  阅读(261)  评论(0编辑  收藏  举报