玩转 Django2.0 笔记1
模板静态
路由
urls.py urlpatterns = [ path("<year>/<int:month>/<slug:day>",mydate), re_path("(?P<year>[0-9]{4}).html",myyear,name='myyear'), ] views.py def mydate(request,year,month,day): print(year,type(year)) print(month,type(month)) print(day,type(day)) return HttpResponse(str(year) + "/" + str(month) + "/" + str(day)) def myyear(request,year): return render(request,"myyear.html") myyear.html <div><a href="/2018.html">2018 old Archive</a></div> <!--myyear 为url名 与urls.py 所设置的参数name 一一对应, 2018 为该url的变量 --> <div><a href="{% url 'myyear' 2018 %}">2018 Archive</a></div>
视图
Django采用MTV的框架模式,即模型(Model)、模板(Template)和视图(Views),三者之间各自负责不同的职责。
- Model模型,数据存取层,处理与数据相关的所有事务,例如如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
- Views视图,表现层,处理与表现相关的决定,例如如何在页面或其他类型文档中进行显示。
- Template模板,业务逻辑层,存取模型及调取恰当模板的相关逻辑,模型与模板的桥梁。
视图是Django的MTV架构模式的V部分,主要负责处理用户请求和生成相应的响应内容,然后在页面或其他类型文档中显示。也可以理解为视图是MVC架构里面的C部分(控制器),主要处理功能和业务上的逻辑。
视图函数完成请求处理后,必须通过return方式返回数据内容给用户,常用的返回方式由render()、render to response()和redirect()函数实现。其中,render()和render_to_response()实现的功能是一致的。render_to_response()自2.0版本以来已开始被弃用,并不代表在2.0版本无法使用,只是大部分开发者都使用render()。render()语法如下
render(request,template_name,context =None,content type=None,status=None,using=None)
render()的参数request和template_name是必需参数,其余的参数是可选参数。
各个参数说明如下。
- request:浏览器向服务器发送的请求对象,包含用户信息、请求内容和请求方式等。
- template_name:HTML模板文件名,用于生成HTML网页。
- context:对HTL模板的变量赋值,以字典格式表示,默认情况下是一个空字典。
- content type:响应数据的数据格式,一般情况下使用默认值即可。
- status:HTTP状态码,默认为200。
- using:设置HTML模板转换生成HTML网页的模板引擎。