Django基础-day69
程序员文章站
2022-03-19 11:56:44
...
from django.shortcuts import render,HttpResponse,redirect
def index(request):
"""
request: 所有请求信息的封装对象
HttpResponse: 最终return的一定是HttpResponse的实例对象
:param request:
:return:
"""
print(request.method) # 请求方式
print(request.path) # 请求路径
print(request.GET) # GET请求的请求数据 QueryDict {}
print(request.POST) # POST请求的请求数据 QueryDict {}
print(request.META) #一个标准的Python字典,包含所有的HTTP首部,就是首行和请求体之间的部分。
#上面是request的属性,下面是方法,
print(request.get_full_path()) # 包含GET请求参数的请求路径
#这个是包含参数的目录,而path仅仅是目录没有参数,
print(request.is_ajax()) # 返回布尔值
# return HttpResponse("OK")
name="alex"
return render(request,"index.html",{"name":name})
def login(request):
if request.method=="POST":
user=request.POST.get("user")
pwd=request.POST.get("pwd")
if user=="alex" and pwd=="123":
# return HttpResponse("登陆成功!")
return redirect("/index/")
return render(request,"login.html")
#这里和讲讲,HttpResponse,render,redirect的区别,
#HttpResponse帮我们封装了HTTP响应头,我们只需要填充我们要发送的信息即可,这个比较直白,就是要发送的字符串,
#render,是对HttpResponse的再次封装,我们只需要填写我们要发送的HTML文件名以及待插入的字典,最终会渲染出一个HTML页面作为响应,
#redirect会先发送一个信息告诉浏览器,你再发送个信息来获取我现在这个地址,之后才会把当前这个地址的内容发送给浏览器,这个和后面的cookie认证有关,因为按理说页面请求应该需要身份认证,而不是说给就给的,
#ps:index,你没加/,浏览器帮你加,其实是两次请求,
submit之后没变,是因为凑巧你的action没有写东西;如果你写东西了,submit后地址栏就是action中的地址了.
如果改为用redirect方法,经过submit之后,地址栏中的地址,就是之后最新的.(action中不能设置内容)
action中的地址和redirect中的地址一样.
之所以不工作,是因为死循环,
除了最后一个,其它都是django系统自带的应用.
template,明明放的就是html文件,为什么叫模版呢?
这么解释吧,你可以往里面插入数据,这不就是模版的特点吗
{{var_name}} ,模版变量定义,
模版语法,就是如何在模版中留坑,外部的代码(比如python)来填坑,从而达到动态的效果,
常用数据类型的使用方法,ps:locals()是导入当前的所有变量,
<h4>{{s}}</h4>
<h4>列表:{{ l.0 }}</h4>
<h4>列表:{{ l.2 }}</h4>
<h4>字典:{{ dic.name }}</h4>
<h4>日期:{{ date.year }}</h4>
<h4>类对象列表:{{ person_list.0.name }}</h4>
对于没有参数的方法,也可以引用,
<h4>字典:{{ dic.name.upper }}</h4>
而模版过滤器,是对我们获取的数据,进行某种处理,
模版的标签,主要就是if,for等语法在html中的写法,
#这里是自定义过滤器和标签
from django import template
from django.utils.safestring import mark_safe
register=template.Library()
@register.filter
def multi_filter(x,y):
# print(x,y),x代表传入的参数,y代表过滤器传入的参数
#这里至少一个参数,即被过滤数据本身,
#后面可以自己添加个过滤器参数,最多一个!!!
return x*y
@register.simple_tag
def multi_tag(x,y,z):
#标签与过滤器不一样,可以传入多个参数
return x*y*z
@register.filter
def link_tag(href,y):
print(y)
return mark_safe("<a href=%s>click</a>"%href)
<h1>自定义过滤器和标签的使用</h1>
{% load my_filter_tag %}
<p>{{ num|multi_filter:1}}</p>
<p>{{ "http://www.luffycity.com"|link_tag:799}}</p>
<p>{% multi_tag 12 12 2 %}</p>
<hr>
<h1>include和extend</h1>
{% include 'advertise.html' %}
上一篇: TSN之iproute2交叉编译
下一篇: LeetCode69题