4、django 模板
一、定义模板
url 反向解析
# 项目下的url配置 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^booktest/',include('booktest.urls',namespace='booktest')) ] # 应用下的url配置 urlpatterns = [ url(r'^$',views.index,name="index"), url(r'^(\d+)/(\d+)$',views.show,name="show") # 加了()表示要取了浏览器里的参数 ] # 视图函数 def index(request): context = {'list':"a b c"} return render(request,'booktest/index.html',context) def show(request,id+id2): context = {'id':id+id2} return render(request,'booktest/show.html',context) # index.html <a href="{% url 'booktest:show' 123 456 %}"> url</a>
###### {% '项目下urls中的namespace:应用下urls中的name' 需要传递的参数 %} # show.html {{id}}
url反向解析的作用:
动态生成url,减少维护工作量。
当我们修改项目下的url路由配置的时候,只要namespace和name不变,html中定义的路由规则则不用修改。
二、模板继承
三、HTML转义
四、CSRF
# urls.py配置 urlpatterns = [ url(r'^csrf',views.csrf1), ] # views.py def csrf1(request): return render(request,'booktest/csrf.html') def csrf2(request): uname = request.POST['uname'] return HttpResponse(uname) # crsf.html <form action="csrf2" method="post" > {% csrf_token %} <input type="text" name="uname"><input type="submit" name="提交"> </form>
五、验证码