Django的初体验(通过pycharm创建Django项目)②

模板语法

本质上就是通过在html中写一些占位符, 由数据对这些占位符进行替换和处理.

1\\列表的传参:

在views中,通过render来传参"n2":

def tpl(req):
    name = "小A"
    list = ["n1n1", "n2n2n2", "n3n3n3n3", "n4n4n4n4n4n4"]
    zidian = {"name": "lisann", "num": "365", "salary": "1000000"}
    return render(req, "tpl.html", {"n1": name, "n2": list, "n3": zidian})

在html中,通过{{n2}}来接受n2:

    <div>{{ n1 }}</div>

    {% for it in n2 %}
        <span>{{ it }}</span>
    {% endfor %}

在这里我做了一个循环来展示列表, 展示效果如下

顺便提一嘴html中换行占位符是"<br>"不需要尾巴, 直接换行, 方便的很

 2\\字典的传参

例:views中看n3:

def tpl(req):
    name = "小A"
    list = ["n1n1", "n2n2n2", "n3n3n3n3", "n4n4n4n4n4n4"]
    zidian = {"name": "lisann", "num": "365", "salary": "1000000"}
    return render(req, "tpl.html", {"n1": name, "n2": list, "n3": zidian})

html端:

    {% for a,b in n3.items %}
        <span>{{ a }} = {{ b }}<br></span>
    {% endfor %}

提一嘴:字典.items = 二者.

<外>刚刚学到一个快捷键很方便, ctrl+D=快速复制本行到下一行.

例:列表套字典的表达(主要看n4):

(基础不扎实的我的感叹:原来列表可以嵌套字典, 那字典可以嵌套列表吗?)

views:

def tpl(req):
    name = "小A"
    list = ["n1n1", "n2n2n2", "n3n3n3n3", "n4n4n4n4n4n4"]
    zidian = {"name": "lisann", "num": "365", "salary": "1000000"}
    liebiaotaozidian = [
     {"name": "lisann", "num": "365", "salary": "1000000"},
     {"name": "ousann", "num": "36", "salary": "1000001"},
     {"name": "tyousann", "num": "5", "salary": "1000002"}
    ]
    return render(req, "tpl.html", {"n1": name, "n2": list, "n3": zidian,"n4": liebiaotaozidian} )

html:

    {% for kk in n4 %}
        {% for a,b in kk.items %}
            <div>{{ a }} = {{ b }}<br></div>
        {% endfor %}<br>
    {% endfor %}

效果如下:

另外, html中还可以使用if等语句:

{#html中还可以用if语句:#}
    {% if n1 == "name"  %}
        <h1>n1 == name</h1>
    {% elif n1 == "na" %}
        <h1>n1 == na</h1>
    {% else %}
        <h1>else</h1>
    {% endif %} 

试了一下, 成了, 开心

再强调一下, 这个模板语法是Django开发的, 所以这里的html不是纯净的html,

 项目实例__联通新闻(阿爬~)

 # 定义一些新闻,构造一些字典或列表 或去数据库查询 通过爬虫网络请求,爬联通现成的新闻
# request url:http://www.chinaunicom.com.cn/api/article/NewsByIndex/2/2023/04/news
# 向以上地址发送请求, 用第三方模块:requests, 并非Django里的request, 是两个概念
# 要安装requests:用pip install requests 

pip么就是win+R然后cmd, 直接往里输入pip install requests, 真的非常方便, 能这样做的原因是因为python在系统里添加了path

应该是看到successfully了就算成功了.

<外>当浏览器向网站发送请求的时候,可以发送get/post请求, 也可以发送传递一些数据

def sth(req):
    # req是一个对象,封装了用户通过浏览器发送过来的所有请求相关的数据

    #.method 是 查询用户请求方式
    print(req.method)
    return render(req , "sth.html")

当你在浏览器上输入网址, 点下回车, 这是以 get方式 发送过来的请求

之后还会学习如何使用post方式发送回请求

用户可以通过在url后面加?加数据来传递参数, 那么如何获取这种参数呢?

案例:用户登录

HTML中input框 type=“submit” 和 type="button"有什么不同?

一、元素定义类型的区别:

1、<input type="button /> 定义为一个可点击的按钮。
2、<input type="submit /> 定义为一个提交按钮。提交按钮会把表单数据发送到服务器。

二、点击触发动作的区别:

1、<input type="button /> 如果没有添加onclick事件的监听,点击时没有任何反应。
2、<input type="submit /> 默认情况下,点击后会执行提交form表单的动作。

册那, 差不多得了, 自己写点东西才发现写东西确实是需要不少时间的, 也是需要耗费一些精力的, 等一个项目写完了直接铺代码上来这样效率来的高得多.

views:

def login(req):
    if (req.method == "GET"):
       return render(req, "login.html")
    elif (req.method == "POST"):
        print(req.POST)
        # 进行校验
        username = req.POST.get("username")
        password = req.POST.get("pswd")
        if(password == "123"):
            return HttpResponse("登陆成功QWQ")
        else:
            # return HttpResponse("失敗したTAT")
            return render(req, "login.html", {"tata":"wotyou"})
        # tata是隐藏信息, 只有在登录失败后才传过去的参数,传了这个tata参数才会显示你想说的话

html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    
    <form method="post" action="/login/">
        {% csrf_token %}
        <input type="text" name="username" placeholder="在此输入您的用户名">
        <input type="text" name="pswd" placeholder="在此输入您的密码">
        <input type="submit" value="lololo"> {{tata}}
        {#tata是隐藏信息, 只有在登录失败后才传过去的参数,传了这个tata参数才会显示你想说的话}
    </form>
</body>
</html>

总而言之挺成功的,一步一步来学到了很多,登录是做出来了,涉及到html的部分有点懵懂, 对表单能直接点submit就发送了POST有点迷糊,数据也不知道是怎么生成的, 总而言之, 写给自己:加油!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值