python django 路由配置 url反向解析 小记

一些常用的view层包:

from django.http import HttpResponse, HttpResponseRedirect, request
from django.template import loader
from django.shortcuts import render
from  django.urls import reverse

两个重用的path配置方法:

第一为正则配置:要注意格式规划以及用$结尾等。

第二为普通带参数,在path写了记得要在view的方法上带上对应的值。

re_path(r'^birthday/(?P<x>\d{1,2})/(?P<y>\d{4})/(?P<z>\d{1,2})$', views.view03),
    path('page/<int:n1>/<str:key>/<int:n2>', views.view02),

对应在view层的调用:

def view02(request, n1, key, n2):
    if key == 'add':
        page = n1 + n2
    elif key == 'cheng':
        page = n1 * n2
    elif key == 'chu':
        page = n1 / n2
    html = '<h1>hello world!</h1>' + str(page)
    return HttpResponse(html)


def view03(request, x, y, z):
    html = y + 'year' + x + 'month' + z + 'day'
    return HttpResponse(html)

常用的view层return方法:

return HttpResponse(html) 普通的返回

return HttpResponseRedirect('page/01')  重定向返回

如何返回一个网页?
方法一:
# f_html=loader.get_template('test01.html')
    # html=f_html.render()
return HttpResponse(html)
这个并不常用
方法二:
return render(request,'test02.html')
这个常用且方便。
补充方法 locals()  可以自动绑定方法内的变量。
    list=['u1','u2','u3']
    str='acvvvvvvv'
    int=80
    return render(request,'test01.html',locals())

url反向解析:

like this

path('base',views.block_base,name='base'),
path('bktest03',views.block_test03,name='bkt3'),
path('bktest04/<age>/<name>',views.block_test04,name='bkt4')

绑定之后,在view层就可以用name来替换url

def block_test04(request,age,name):
    url=reverse('bkt4',kwargs={'age':1,'name':2})
    return  HttpResponseRedirect(url)

一些模板层的记录:

普通的传递变量:
{{}}
like
{{dict2}},{{td}}
调用变量中的具体部分:
like
views:    #     'list':['a','b','c'],
    #     'dict2':{'name':'uu'},

in html中:
{{list.0}}索引,{{dict2.name}}字典名
过滤器:
可以在html中直接对引用的变量进行处理(如大小写等)
in html:
<p>{{str|upper}}</p>
	<p>{{int|add:'80'}}</p>


模板层中的if and for:
注意格式{$ for or if$}  xxx {$ end for or if $}
like
{% for i in list %}
{% if forloop.first %} 
<p>first</p> 
{% endif %}
<p>{{ forloop.counter0 }}{{i}}</p>
{% if forloop.last %} 
<p>last</p> 
{% endif %}
{% endfor %}

模板的继承:

子模版继承父模板:
{% extends 'base.html' %}
注意 html用引号包着

父模板设置可修改内容:
{% block name %}
{% endblock %}
like
{% block bk2 %}
<p>this is content</p>
{% endblock %}

子模版对应修改方法:
{% block bk2 %}
<h1>03html</h1>
{% endblock %}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值