django 视图与网址
我是一个新手,内容粗糙,望大家多多指点。在这里我只是总结自身所学。
视图与网址
操作文件:urls.py、views.py
urls.py
作用:用于处理前台的链接(如前台访问:127.0.0.1:8080/index/1212/21212),其实永远访问的是同一个文件,至于结果则是通过urls处理,调用不同views中的不同函数,当然这些函数可以在urls中指定。
主要格式:
1.7:url(r
'^add/$'
,
'calc.views.add'
, name
=
'add'
)
,
1.8:
url(r
'^add/$'
, views.add, name
=
'add'
),
2.0:
path(
'add/'
, views.add, name
=
'add'
),
注意:1.8和2.0需要将views导入到urls中,如 from
app
import
views
额外:可以在app中新建urls,通过include函数(2.0:from
django.urls
import
include)使其有效(path('app/', include('app.urls')),)
值得一提的是,每个路由都有一个name(如上:name="add")可写可不写,这里虽不是必须但也极其重要,他是前台链接的别名,即模板中可以使用这个name的值作为路由,需要和{% url %}一起使用。这样写的好处是,代码可维护性很高。
views.py
上面提到需要在urls中引入views模块,如:views.add,其实是在调用views中的add方法,这个方法很特殊,必须至少一个参数,而第一个参数作为数据请求的句柄,也就是request,在里面可以获取前端发来的请求,而且必须返回一个HttpResponse对象。
作用:用于处理请求、数据库交互、模板调用等(内容很多)。
调用模板(templates): 在views 的函数中最后加上return
render(request,
'home.html'
),
home.html即为模板名称,相应的在tempalates中必须有home.html文件,并且需要设置settings.py中的TEMPLATES变量,设置DIRS:'DIRS': [os.path.join(BASE_DIR,'Templates')],
数据库模块:还没学,据说需要调用一个数据库框架,到时候再看看。
Templates模块
组成: 循环,条件判断,标签,过滤器等。
循环:用法跟python一样,唯一区别在于需要{% for i in TutorialList %},结束需要 {% endfor %},不需要考虑缩紧问题
循环中系统提供的变量:
forloop.counter | 索引从 1 开始算 |
forloop.counter0 | 索引从 0 开始算 |
forloop.revcounter | 索引从最大长度到 1 |
forloop.revcounter0 | 索引从最大长度到 0 |
forloop.first | 当遍历的元素为第一项时为真 |
forloop.last | 当遍历的元素为最后一项时为真 |
forloop.parentloop |
用在嵌套的 for 循环中, 获取上一层 for 循环的 forloop |
{% for i in TutorialList %} {{ i }} {% endfor %}