学习目标:
继续学习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都是自己取得,所以不必在意,然后我在这个地方再加一张图,方便大家理解
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,不多说,上效果图
还有大佬的总结图
注:上面这一块是很重要内容,我们页面内的内容和样式的模板基本就是这个。
做一个案例:
做一个伪联通新闻中心
先去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>
最后的显示结果要看自己爬取的网站而定,我就不放上来了~~
后面的内容就是源码的注释,以及一些知识的补充,与兴趣可以看一看
学习时间:
早八晚九
学习产出:
尽人事,听天命