django听课笔记3
django听课笔记31.url解释2.django的urls.py解释3.重要的3个视图函数4.static文件夹1.新建static文件夹2.配置静态文件夹路径3.引用静态文件4.令牌动态解析5.path函数6.form表单
1.url解释
url:统一资源定位符 互联网上每个文件都有一个唯一的ul,它包含的 信息指出文件的位置以及浏览器应该怎么处理 它 语法:
protocol://hostname[:port]/path[?query]
protocol::协议 hostname:主机 port:端口号 path:路由地址,由零个或多个"隔开的字符串, 一般用来表示主机上的一个目录或者文件地址 query:查询,可选,用于给动态网页传递参数,可以 有多个参数,用”&”隔开,每个参数的名和值用”=” 符号隔开
2.django的urls.py解释
端口号可以更改,默认8000
!注意可能需要更改:PYTHONUNBUFFERED=1:DJANGO _SETTINGS_MODULE=mysite1.settings
本机缺失:DJANGO _SETTINGS_MODULE=mysite1.settings
django如何处理一个url对应的请求 http://127.0.0.1:8000/page/2023 1.django从配置文件中根据root_urlconf找到主 路由文件(url.py(默认情况下该文件在项目同名 目录下的urs) 2.django加载主路由文件中的urlpatterns变量 3.依次匹配urlpatterns中的url,匹配到第一个合 适的中断后续的匹配 4.匹配成功->调用对应的视图函数处理请求,返 回响应 5.匹配失败->返回404响应
项目同名文件夹下的urls.py存放一个列表套元组的东西,路由分发
3.重要的3个视图函数
views.py中的三个重要的方法 HttpResponse():返回字符串类型的数据 render():返回html文件 redirect():重定向
from django.shortcuts import render,HttpResponse,redirect #request:请求 def index(request): #内部传递一个字符串参数,返回给刘览器 #return HttpResponse('hello') name = 'wuluo' age = 18 return render(request,'index.html',locals()) #locāls():将当前函数内部所有的变量以键值对的形式传递给html页面 #除了request参数之外还接了一个待谊染模板文件和一个字典 return redirect('http://www.baidu.com/')
HttpResponse(字符串)
render(request,html文件,字典)
4.static文件夹
1.新建static文件夹
在大文件夹中新建static文件夹,并将js,css,images等静态文件粘贴进来
2.配置静态文件夹路径
settings中配置static路径,并创建令牌
#创建令牌,如果前缀是“令牌名static”则接受访问 STATIC_URL = '/static/' #静态文件配置,settings.py中 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') #staic是文件夹名字 ]
3.引用静态文件
static路径添加成功后,在images文件中引用路径,直接引用static,注意/static/不能省略,因为static是令牌!
STATIC_URL = '/static/'就是钥匙,只有加了/static/才能访问该文件夹,而views.py访问templates/home.html,不需要加/templates/
<images src ="/static/images/1.1,png" alt="">其中的static是令牌钥匙,而不是static文件夹
4.令牌动态解析
当html页面加入{%load static%}就相当于变成了/令牌/,也就是/static/,这样无论在settings中怎么设置STATIC_URL = '/×××/'都无效了!
5.path函数
path()函数 用于描述路由和视图函数的对应关系 path(route,views,name=None) route:字符串类型,匹配的请求的路径 views:指定路径所对应的视图函数的名称 name:为地址起别名,在模板中地址反向解析时 使用,当route是正则表达式时使用name代替正则
urls.py中
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('login/',views.index), ]
6.form表单
form标签的action参数是用来提交数据的路由,method="post",不写默认朝进入的路由的request对象提交数据
action参数一般是默认,然后在对应路由加if else的请求分支
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.min.css"> </head> <body> <h1 class="text-center">登录</h1> <div class="row"> <div class="col-md-8 col-md-offset-2"> <form action="" method="post"> <p>username:<input type="text" name="username" class="form-control" ></p> <p>password:<input type="password" name="password" class="form-control" ></p> <input type="submit" class="btn btn-success btn-block"> </form> </div> </div> </body> <script src="/static/bootstrap-3.4.1-dist/js/bootstrap.min.js"></script> <script src="/static/js/jquery_3.6.0.js"></script> </html>
submit会变成post请求,需要注释掉settings.py中的MIDDLEWARE第四行