django几大部分

路由系统:

1、可以使用includ进行url分发

from django.conf.urls import url, include
from django.contrib import admin


urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^app01/', include("APP01.urls")),
    url(r'^app02/', include("APP02.urls")),
]




from django.conf.urls import url, include
from django.contrib import admin
from APP01 import views

urlpatterns = [
    # url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
]

2、例如编辑的时候,以往是通过   

<a href="/app01/edit/?id={{ id }}">编辑</a>

   这样的方式发送到后端,现在可以使用路由中的正则来匹配,

如:

路由中:
url(r'^edit/(\w+)/', views.edit),

视图中:
def edit(request, name):
print(name)

模版中:
<a href="/app01/edit/{{ user }}">编辑</a>




3、路由系统中url正则组还可以自定义命名,视图中根据正则组名字来取
urlpatterns = [
url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+)', views.edit),
]
上述就是给两个正则组分别命名为p1、p2,需要注意的是,正则组如果采用位置就都采用位置,如果采用名字就都采用名字
路由正则尽量以$结尾,如果以 / 结尾的话 /前面可以无限写东西


4、伪静态(路由系统中url后缀加.html),目的是让用户感觉到是静态文件,加载很快的样子
urlpatterns = [
url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+).html/$', views.edit),
]



5、路由系统反向生成url(根据名字反向寻找url)
应用场景:比如说不同的用户有不同的权限能访问不同的url,如果把每个人能访问的url都放进数据库占空间,而直接放反向生成的别名就好了。

在python代码中可以应用:
路由中:
urlpatterns = [
url(r'^edit/(?P<a1>\w+)/(?P<a2>\w+).html/$', views.edit, name="t2"),
]
视图中:
from django.urls import reverse
v = reverse("t2", kwargs={"a1": "alex", "a2": 18})
print(v)
 
在模版中可以应用:
<form method="post" action="{% url "t2" %}">
<input type="text">
</form>
 
 
 








猜你喜欢

转载自www.cnblogs.com/QimiSun/p/10746016.html