如果项目中只使用到了一个APP应用,完全可以避免使用多层路由,多层路由在项目里涉及到2个或多个APP时使用
所谓路由,简单来说,就是给项目路径分流。
比如有一个项目 webnet,下面使用到了两个应用程序 stu_sys 和 tea_sys,需要区分访问时
可以在各自的APP根目录新建urls文件夹,将自己下面的对应关系写入:
1 from django.conf.urls import url
2 from tea_sys import views
3
4 urlpatterns=[
5
6
7 url(r'^show/', views.openone),
8
9 ]
同时导入各自对应的views文件比如views文件下基本配置:
1 from django.shortcuts import HttpResponse,render,redirect
2
3 def openone(request):
4 return render(request,'show.html')
最后再将各自的urls文件导入到wennet项目下的urls文件 并注册
1 from stu_sys import urls as stu_urls
2 from tea_sys import urls as tea_urls
3
4 urlpatterns = [
5
6 url(r'^stu_sys/',include(stu_urls)),
7 url(r'^tea_sys/',include(tea_urls)),
8
9 ]
因为都是urls文件,会重名,所以可以用as给它们各自命名,这样就完成了二级路由
下次在访问项目时前面则需要加入各自的APP名称了, 比如 http://127.0.0.1:8000/tea_sys/show/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
url的反向解析:通过给urls文件里面的对应关系起一个别名,放到HTML页面里,它会自动解析整个项目下名字匹配的值对应的路径 ,从而取到正确的路径,
就算是对应关系的名字被更改了也不会影响
比如:
1 url(r'^mc/', views.openone,name='see'),
按照see去整个项目里检索:
1 <a href="{% url 'see' %}">点我</a>
要注意的是:{% url 'see' %} 会对整个项目进行检索,所以前面不要添加任何路径,否则可能会出错
另外一种,也可以在视图里实现反向解析,需要在视图里导入reverse模块
1 from django.urls import reverse
然后在views的函数里去调用reverse去检索
1 rec=reverse('see')
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
auto_now_add=True 会在创建数据库时,把当前时间添加到数据库
auto_now=True 会在每次更新记录时更新数据 用作日志记录时间方便
时间间隔的处理:
会用到datetime模块
1 import datetime
2
3 now=datetime.datetime.now()
4 d=datetime.timedelta(days=7)
5 long=now+d
6 print(now,long)
输出的是七天之后的当前时间