Django之路由系统

Django之路由系统

  1:一一对应的路由:

    一个URL对应一个函数

/login/ ---> def login(request)   

  2:动态路由:

/login/(\d+)/  ----> def login(request,a)
#正则表达式 ------------- 参数a是用来接收正则的
/login/(?p<a1>\w+)/ -----> def login(request,a1)
#(?p<a1>\w+) 的好处是不用位置传参,将w+的值给a1.

  3:终止符 '^  $':

'^login$'   

  4:伪静态(html):html就是伪静态

^login/(?p<a1>\w+).html$

  5:路由分发:

   在项目名的urls中用include方法,将路由分放,使每个文件件的路由关系独立。

from django.conf.urls import url,include

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^app01/', include('app01.urls')),
]

 这样,app01文件夹下的url就可以独立了

 app01中的url就要加上app01的路径。

 在app01中的urls.py中

from django.conf.urls import url
from app01 import views

urlpatterns = [
    url(r'^login.html$',views.login),          
]

 在app01的views中加login

def login(request):
    return HttpResponse("ok")

 也可在项目名中的url中,定义错误页面

def default(request):
    return HttpResponse("404 Not Found")

 在项目名的url中设置默认页面: 

url(r'^ ', views.index)

 这样就默认页面是index函数的相关数据了。

   6:路由别名反向生成URL(给URL的关系命名)

  在url后加name,可以通过name反向找到url。

 url(r'^index/',views.index,name='n1'),

 在views中导入 reverse 反转。 

from django.urls import reverse

def index(request):
    user_list = [
        "wang",
        "george",
    ]
    
    v = reverse("n1")
    print(v)
    #这个v就是url:index

  在url中使用正则:

r'^index/(?P<a1>\w+).html$'

在函数中,def index(request,a1):

  在reverse中加:  

v = name('n1',args=(1, ))   #数字1,不固定,写几都行。

  这样写的效果就是:

在url中,无论index的后面加什么,在后端的index中,都为1。   /index/1/

  在用正则时要注意的是: 

(\w+) 的 reverse中为args(xxxx, )
(?p<a1>\w+) 时,reverse中为kwargs={"a1":11111}

  在前端中,也可以用别名:

<from method="POST" action='/login/'>
'/login/' ----> 也可以写成  "{% url "n1" %}"    
这时,前端的别名会去反向生成url。

  在前端的for中:

{% for i in user_list %}
    <li>{{ i }} | <a herf="{% url "n1" i %}"> 编辑 </a></li> 
{% endfor %}

 

转载于:https://www.cnblogs.com/george92/p/8505162.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值