欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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,你没加/,浏览器帮你加,其实是两次请求,

Django基础-day69

submit之后没变,是因为凑巧你的action没有写东西;如果你写东西了,submit后地址栏就是action中的地址了.
如果改为用redirect方法,经过submit之后,地址栏中的地址,就是之后最新的.(action中不能设置内容)



Django基础-day69

action中的地址和redirect中的地址一样.
之所以不工作,是因为死循环,

Django基础-day69

除了最后一个,其它都是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' %}