学习目标:

继续学习python,顺便把爬虫也搞一搞,顺便说一下,我这个属于记录博客,新手看一下可以,django建议去b站看银角大王的视频,我这就是跟着来的



模板语法D

先讲一下模板语法,这个在本质上就是在HTML当中去写一些占位符,由数据对这些占位符进行替换和处理

views:


from django.shortcuts import render, HttpResponse


def index(request):
    return HttpResponse("欢迎使用")


def user_list(request):
    return render(request, user_list)
    # 如果想放进html文件的话就要用render


def user_add(request):
    return HttpResponse("添加用户")


# 这里request是django里面的用到的参数,还有一个request是第三方模块,前往不要弄混
def tpl(request):
    name = "大聪明"
    rolse = ['管理员', "ceo", "保安"]
    user_info = {"name": "果汁", "salary": 100000, 'role': "CTO"}

    data_list = [
        {"name": "果汁", "salary": 10000, 'role': "CTO"},
        {"name": "芦荟汁", "salary": 10000, 'role': 'CTO'},
        {"name": "赵奖项", "salary": 10000, 'role': "CTO"},
    ]

    return render(request, 'tpl.html', {"n1": name, "n2": rolse, "n3": user_info, "n4": data_list})

# Create your views here.
# 本质就是在url里面添加一个对应关系,
# 然后在视图函数中去处理这个请求

注意:name,rolse,user_info都是自己取得,所以不必在意,然后我在这个地方再加一张图,方便大家理解

Python创意编程大赛规则 python编程职业技能大赛_html

tpl:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<hr>
<h1>模板学习语法</h1>
<div>{{ n1 }}</div>
<div>{{ n2 }}</div>

{#这上面的就是你的列表长什么样子,它显示就是什么样子#}


<div>{{ n2.0 }}</div>

{#如果想取指定的索引,就按照下面的这种写法#}

<div>{{ n2.1 }}</div>
<div>{{ n2.2 }}</div>

{#如果元素较多的话,那可以用循环来遍历到所有#}

<div>
{#就可以把列表循环展示到我们的页面上#}
    {% for item in n2 %}
{#        开始#}
    <span>{{item}}</span>
    {% endfor %}
{#结束#}
</div>
<hr/>
{{n3}}
{{n3.name}}
{{ n3.salary }}
{{ n3.role }}

<ul>
    {% for item in n3.items %}
        <li>{{ item }}={{ item }}</li>

    {% endfor %}

</ul>

<hr/>
{{ n4.1 }}
{{ n4.1.name }}
{{ n4.1.role }}

{#循环一个列表#}
{#每一个item就是一个字典#}

{% for item in n4 %}
    <div>{{ item.name }}{{ item.salary }}</div>

{% endfor %}

<hr/>

{% if n1 == "大聪明" %}
    <h1>大大大撒打算</h1>
{% else %}                  {# 如果等于大聪明就返回‘大大大撒打算’,否则返回‘打卡萨还得看’ #}
    <h1>打卡萨还得看</h1>
{% endif %}


{% if n1 == "大聪明" %}
    <h1>大苏打</h1>
    <h1>dssada</h1>
    {% elif n1 == "xxx" %}
    <h1>的撒大</h1>
    {% else %}
    <h1>大撒大撒</h1>

{% endif %}


</html>

 

urls:

"""xuexi URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index/', views.index),
    path('user/list/', views.user_list),
    path('user/add/', views.user_add),
    path('tpl/', views.tpl),

]

这三张图就是模板语法的一个应用,建议看完一再来看二,因为这里面有些代码是一里面的,二里面主要就是tpl,不多说,上效果图

还有大佬的总结图

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_02

 


 注:上面这一块是很重要内容,我们页面内的内容和样式的模板基本就是这个。

做一个案例:

做一个伪联通新闻中心

先去urls里面注册一个对应关系

urls:

from django.contrib import admin
from django.urls import path
from app01 import views

urlpatterns = [
    # path('admin/', admin.site.urls),
    path('index/', views.index),
    path('user/list/', views.user_list),
    path('user/add/', views.user_add),
    path('tpl/', views.tpl),
    path('news/', views.news),

]

 然后再去views里面编写视图函数

views:


def news(req):
    # 可以定义一些新闻(字典或者列表),如果不想自己搞数据库的话,就用爬虫数据请求去搞网站数据
    # 这个地方要导入第三方模块requests(pip install requests)不过更建议直接在pycharm里面下载

    import requests
    res = requests.get("https://api.bilibili.com/x/space/arc/search?mid=1378036455&ps=30&tid=0&pn=2&keyword=&order=pubdate&order_avoided=true&jsonp=jsonp")
    data_list = res.json()
    print(data_list)
    return render(req, 'news.html', {"news_list": data_list})

# Create your views here.
# 本质就是在url里面添加一个对应关系,
# 然后在视图函数中去处理这个请求

最后是news.html

news.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>新闻联通中心</h1>
<ul>
    {% for item in news_list %}
    <li>{{ item.news_title }}</li>
    {% endfor %}
{#把所有的数据全部显示出来#}

    <li>{{ news_list.0.news_title }}</li>
{#显示第一行的数据#}
</ul>
</body>
</html>

 最后的显示结果要看自己爬取的网站而定,我就不放上来了~~

后面的内容就是源码的注释,以及一些知识的补充,与兴趣可以看一看

Python创意编程大赛规则 python编程职业技能大赛_html_03

Python创意编程大赛规则 python编程职业技能大赛_开发语言_04

 

 

Python创意编程大赛规则 python编程职业技能大赛_python_05

 

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_06

 

Python创意编程大赛规则 python编程职业技能大赛_python_07

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_08

Python创意编程大赛规则 python编程职业技能大赛_python_09

 

 

Python创意编程大赛规则 python编程职业技能大赛_django_10

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_11

 

Python创意编程大赛规则 python编程职业技能大赛_python_12

 

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_13

 

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_14

 

Python创意编程大赛规则 python编程职业技能大赛_html_15

 

Python创意编程大赛规则 python编程职业技能大赛_html_16

 

Python创意编程大赛规则 python编程职业技能大赛_django_17

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_18

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_19

 

Python创意编程大赛规则 python编程职业技能大赛_html_20

 

Python创意编程大赛规则 python编程职业技能大赛_html_21

 

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_22

 

Python创意编程大赛规则 python编程职业技能大赛_开发语言_23

 

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_24

 

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_25

 

Python创意编程大赛规则 python编程职业技能大赛_html_26

 

Python创意编程大赛规则 python编程职业技能大赛_python_27

 

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_28

 

Python创意编程大赛规则 python编程职业技能大赛_django_29

 

 

Python创意编程大赛规则 python编程职业技能大赛_python_30

Python创意编程大赛规则 python编程职业技能大赛_Python创意编程大赛规则_31

 

 

 

Python创意编程大赛规则 python编程职业技能大赛_python_32

 

 

 

学习时间:

早八晚九


学习产出:

尽人事,听天命