Django-路由(反向解析)

#没有正则表达式的url

from django.contrib import admin
from django.urls import path,re_path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
#定义一个路由,并且给路由起名为login
    path('login/',views.login,name='login')
]

#在模板中使用,这样就可以反向解析出login的url,跟换url都不在需要重新写模板
<form method="post" action="{% url 'login'%}">

    <input type="text" name="name">
    <input type="password" name="pwd">
    <input type="submit">
</form>
#有正则表达是的url


from django.contrib import admin
from django.urls import path,re_path
from app01 import views

urlpatterns = [
    path('admin/', admin.site.urls),
#定义一个url,并起名为login
    re_path(r'^login/([0-9]{4})/$',views.login,name='login')
]


#定义一个login 函数

from django.shortcuts import render,HttpResponse
#在python代码中反向解析url 需要导入reverse
from django.urls import reverse


def login(request):
    #在url中含有正则表达式时,我们需要自行传入参数,并且传入的参数必须符合正则表达式,元组形式,后面必须加逗号
    url =reverse('login',args=(2008,))
    print(url)
    if request.method =='GET':
        return render(request,'login.html',{'url':url})
    else:
        name =request.POST.get('name')
        pwd =request.POST.get('pwd')
        if name =='xxx' and pwd=='123':
            return HttpResponse('400')
        else:
            return  HttpResponse('404')

猜你喜欢

转载自www.cnblogs.com/wtil/p/9243139.html