做网站gzip压缩,网站建设网络推广方案,厦门做网站多,wordpress怎么配置笔记为自我总结整理的学习笔记#xff0c;若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——templates模板、静态文件、djang… 笔记为自我总结整理的学习笔记若有错误欢迎指出哟~ 【Django专栏】 Django——django简介、django安装、创建项目、快速上手 Django——templates模板、静态文件、django模板语法、请求和响应 Django——连接mysql数据库 Django——templates模板、静态文件、django模板语法、请求和响应 templates模板按app顺序寻找模板全局模板 静态文件jqueryBootstrap django模板语法语法特性和用法视图中的render函数示例 请求和响应请求Request1.request的属性和方法2.GET请求3.POST请求 响应Response1.HttpResponse2.render3.redirect重定向 报错解决 templates模板
Django 模板是 Django 框架中用于生成动态内容的一种工具它允许开发者将 Python 代码和静态模板结合起来以生成最终的 HTML 内容。使用 Django 模板可以让开发者在页面中插入动态数据、应用逻辑控制流程并重用通用的页面结构和样式。
在 Django 中模板通常与视图函数结合使用视图函数负责处理业务逻辑并将数据传递给模板模板则负责渲染这些数据并生成最终的 HTML 页面返回给用户。通过良好的组织和使用模板可以使 Web 应用程序的代码更加清晰、易于维护并提高开发效率。
按app顺序寻找模板 注意renturn render()【不是找当前app而是根据app的注册顺序寻找user_list.html】
全局模板
一般情况下属于哪个app的模板就写在哪个app下。全局模板需要配置
# 修改setting.pyimport os
TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR,templates)],APP_DIRS: True,OPTIONS: {context_processors: [django.template.context_processors.debug,django.template.context_processors.request,django.contrib.auth.context_processors.auth,django.contrib.messages.context_processors.messages,],},},
]静态文件
样式表CSS、JavaScript 文件、图像、字体文件等
在使用 Django 这样的 Web 框架时静态文件通常存储在应用程序的 “static” 目录中。这些静态文件可以包括用于美化页面样式的 CSS 文件用于增强交互性的 JavaScript 文件以及网站使用的图像、字体等资源。
jquery
jquery下载网址https://releases.jquery.com/jquery/ jquery.3.6.min.js打开链接复制粘贴https://code.jquery.com/jquery-3.6.0.min.js 版本区别 Uncompressed未压缩包含了完整的源代码没有进行任何压缩或优化处理。便于阅读和调试文件体积较大。
Minified压缩通过删除空格、注释和其他不必要的字符来减小文件体积。代码阅读和调试困难一些。
Slim精简版去掉了一些不常用的功能或模块以减小文件大小。只保留核心功能可以根据需求自行添加需要的模块或插件。
Slim Minified精简压缩版精简版进行了代码压缩处理去除了多余的字符以进一步减小文件体积。
Bootstrap
Bootstrap 中文网https://www.bootcss.com/ 下载Bootstrap v3https://v3.bootcss.com/
{% load static %}!DOCTYPE html
html langen
headmeta charsetUTF-8titleTitle/titlelink relstylesheet href{% static plugins/bootstrap-3.4.1/css/bootstrap.css%}
/head
body
h1用户列表/h1
input typetext classbtn btn-primary value新建/
img src{% static img/1.png %} altscript src{% static js/jquery.3.6.min.js %}/script
script src{% static plugins/bootstrap-3.4.1/js/bootstrap.js %}/script
/body
/htmldjango模板语法
语法特性和用法
作为一个Web框架Django需要一种方便的方法来动态地生HTML 。最常见的方法依赖于模板。模板包含所需HTML输出的静态部分以及一些特殊语法描述如何插入动态内容。Django 官方文档关于模板语法的网址https://docs.djangoproject.com/en/3.2/topics/templates/
以下是 Django 模板语法的一些重要特性和用法 变量插值 在模板中使用 {{ 变量名 }} 的语法来插入变量的值。例如h1{{ title }}/h1 逻辑操作 使用 {% 标签 %} 的语法来执行一些逻辑操作如控制流程、循环和逻辑判断等。例如{% if condition %} ... {% endif %} 过滤器 过滤器允许对变量进行处理或格式化以满足特定需求。通过在变量之后使用 | 和过滤器名称来应用过滤器。例如{{ variable|filter_name }} 模板继承 使用 {% extends base.html %} 标签来创建一个模板继承结构在子模板中可以覆盖父模板的特定部分。例如在子模板中使用 {% block content %} ... {% endblock %} 来覆盖父模板中的内容。 包含 使用 {% include partial.html %} 标签将其他模板文件包含到当前模板中。这可以用于重复使用和组织模板代码。 循环 使用 {% for item in items %} ... {% endfor %} 的语法进行循环操作。例如循环遍历一个列表或查询集合中的数据。 静态文件引用 使用 {% static path/to/file %} 的语法引用静态文件如 CSS、JavaScript 和图像等。Django 通过静态文件处理器来管理和提供静态文件。
这只是 Django 模板语法的一小部分还有其他更多的特性和用法。通过使用模板语法开发人员可以在 Django 中构建灵活且具有动态性的网页并将数据与模板进行分离以便于维护和重用。
视图中的render函数
当在视图函数中使用 render 函数时它会执行以下主要操作 加载模板 render 函数首先会根据给定的模板名称加载相应的模板文件。 渲染上下文 接下来render 函数会将传入的数据上下文与加载的模板结合起来形成最终的渲染上下文。 渲染模板 使用渲染上下文render 函数会将模板中的变量、标签和过滤器等进行解析和替换生成最终的 HTML 内容。 创建 HTTP 响应 最后render 函数会将渲染得到的 HTML 内容作为响应的正文生成一个 HTTP 响应对象并将其返回。
示例 views.py
# views.py
def template(request):teacher 背背students [圈圈1,圈圈2,圈圈3]student_info {name:圈圈, age:18, gender:女}return render(request,template.html,{t: teacher,s: students,s_info: student_info})template.html
!DOCTYPE html
html langen
headmeta charsetUTF-8title模板语法学习/title
/head
body
h4 stylecolor:red变量插值/h4
divteacher{{ t }}/divhr/
divstudents列表{{ s }}/divhr/
divstudents0{{ s.0 }}/div
divstudents1{{ s.1 }}/div
divstudents2{{ s.2 }}/divhr/
divname{{ s_info.name }}/div
divage{{ s_info.age }}/div
divgender{{ s_info.gender }}/divh4 stylecolor:red循环/h4
div{% for item in s%}li{{ item }}/li{% endfor %}
/divhr/div{% for k,v in s_info.items %}li{{ k }} : {{ v }}/li{% endfor %}
/divh4 stylecolor:red逻辑操作/h4
div{% if s_info.name 圈圈 %}Yes{% else %}No{% endif %}
/div
/body
/html请求和响应
在 Django 中请求和响应是 Web 应用程序中非常重要的部分。以下是关于 Django 请求和响应的简要说明 请求Request 在 Django 中请求对象代表了客户端发送给服务器的 HTTP 请求。请求对象包含了关于请求的各种信息如 HTTP 方法、请求头部、路径参数、查询参数、表单数据等。Django 的请求对象是 HttpRequest 类的实例可以通过视图函数的参数获取到请求对象并从中获取所需的信息。 响应Response 响应对象代表了服务器对客户端请求的回复包含了要发送回客户端的内容和元数据。在 Django 中响应对象通常是 HttpResponse 或其子类的实例。可以通过视图函数返回一个响应对象来向客户端发送数据响应对象可以包含 HTML 内容、JSON 数据、文件下载等。
在 Django 中处理请求和响应的过程通常发生在视图函数中。视图函数接收请求对象作为参数根据请求的内容进行处理并返回一个响应对象以供客户端使用。Django 还提供了许多方便的工具和函数来简化请求和响应的处理如装饰器、模板渲染、重定向等使得开发者可以更轻松地构建强大的 Web 应用程序。
请求Request
1.request的属性和方法
HttpRequest对象具有许多属性和方法以下是其中一些常用的
属性
request.methodHTTP请求的方法例如 ‘GET’ 或 ‘POST’。request.GET一个类似字典的对象包含了所有的GET参数。request.POST一个类似字典的对象包含了所有的POST参数。request.FILES一个类似字典的对象包含了所有上传的文件。request.path当前请求的路径不包括域名部分。request.META一个包含了所有HTTP头部信息的字典。request.session一个表示当前会话的Session对象。request.user表示当前经过身份验证的用户的User对象。
方法
request.get()从请求参数中获取指定键的值如果键不存在则返回默认值。request.getlist()从请求参数中获取指定键的值列表即使只有一个值也返回列表。request.is_ajax()检查请求是否通过Ajax发送。request.is_secure()检查请求是否通过安全连接HTTPS发送。request.build_absolute_uri()构建完整的绝对URL。request.is_authenticated()检查当前用户是否已经经过身份验证。request.is_anonymous()检查当前用户是否匿名。
除了上述属性和方法之外还有其他更多的属性和方法可用于处理HttpRequest对象。你可以根据需要在视图函数中使用这些属性和方法来获取请求的各种信息并根据其进行相应的处理和响应。
2.GET请求 处理一个简单的 GET 请求时以下是一个基本的 Django 视图函数示例 views.py
# POST方式if request.method POST:# 处理表单提交name request.POST.get(name, )email request.POST.get(email, )print(fHello, {name}! email,{email})# 构造上下文数据context {name: name,email: email,}# 渲染模板并返回响应return render(request, result.html, context)else:# 显示表单页面return render(request, register.html)register.html
!DOCTYPE html
html
headtitle输入信息/title
/head
bodyh2请输入您的信息/h2form methodpost action/register/
!-- {% csrf_token %} 是 Django 模板标记用于防止跨站请求伪造CSRF攻击。--
!-- Django 要求所有 POST 的表单都要包含这个标记以确保安全性。--{% csrf_token %}label forname姓名/labelinput typetext idname namenamebrbrlabel foremail邮箱/labelinput typeemail idemail nameemailbrbrinput typesubmit value提交/form
/body
/htmlresult.html
!-- result.html --
!DOCTYPE html
html
headtitle提交结果/title
/head
bodyh2提交结果/h2p您提交的信息如下/pp姓名{{ name }}/pp邮箱{{ email }}/p
/body
/html3.POST请求 register.html和result.html与GET方法相同
views.py
# GET方式http://127.0.0.1:8000/register?name圈圈email123456789qq.comif request.method GET:if request.GET.get(name)None or request.GET.get(email)None:return render(request, register.html)else:name request.GET.get(name)email request.GET.get(email)# 构造上下文数据context {name: name,email: email,}return render(request, result.html, context)响应Response
1.HttpResponse
return HttpResponse(响应1)2.render
return render(request, register.html)3.redirect重定向
return redirect(https://www.baidu.com)报错解决
报错信息 Forbidden (403) CSRF verification failed. Request aborted.
报错原因 这个错误通常是由于Django中的CSRF保护机制导致的。CSRFCross-Site Request Forgery是一种网络安全攻击Django通过在表单中添加CSRF标记来防止这种类型的攻击。当表单提交时Django会验证CSRF标记如果验证失败就会产生这个错误。
解决方法
在模板中添加CSRF标记确保你的表单模板中包含了{% csrf_token %}标记例如
form methodpost{% csrf_token %}!-- 其他表单字段 --input typesubmit valueSubmit
/form使用csrf_exempt装饰器如果你的视图函数不需要CSRF保护你可以在视图函数上使用csrf_exempt装饰器来跳过CSRF验证例如
from django.views.decorators.csrf import csrf_exemptcsrf_exempt
def your_view(request):# 视图函数代码检查中间件设置确保Django的CSRF中间件已经被正确添加到了MIDDLEWARE设置中并且处于启用状态例如
MIDDLEWARE [# ...django.middleware.csrf.CsrfViewMiddleware,# ...
]通过以上方法之一你应该能够解决“CSRF verification failed. Request aborted.”这个错误并成功提交表单数据。