当前位置: 首页 > news >正文

用模块做网站毕业设计做网站

用模块做网站,毕业设计做网站,网站的设计与制作,如何自学美工Django框架基础 unit01一、Django基础1.1 什么是Django?1.2 安装与卸载1.2.1 Python与Django的版本1.2.2 安装1.2.3 查看Django版本1.2.4 卸载 二、Django项目2.1 概述2.2 创建项目2.3 启动项目2.4 项目的目录结构2.5 配置 三、URL 调度器3.2 定义URL路由3.2 定义首页的路由3.… Django框架基础 unit01一、Django基础1.1 什么是Django?1.2 安装与卸载1.2.1 Python与Django的版本1.2.2 安装1.2.3 查看Django版本1.2.4 卸载 二、Django项目2.1 概述2.2 创建项目2.3 启动项目2.4 项目的目录结构2.5 配置 三、URL 调度器3.2 定义URL路由3.2 定义首页的路由3.3 便捷管理路由及视图函数3.4 路径转换器3.4.1 int3.4.2 str3.4.3 slug3.4.4 uuid3.4.5 path 四、模块4.1 创建模块4.2 注册模块4.3 分布式路由 unit02一、DTL1.1 什么是DTL1.2 模板配置1.3 render()函数 二、DTL2.1 变量2.2 标签2.2.1 for标签2.2.2 if标签2.2.3 表单2.2.4 csrf_token2.2.5 静态资源2.2.5.1 静态资源的配置2.2.5.2 访问静态资源 unit03一、DTL1.1 标签include标签cycle标签 注释1.2 过滤器safestriptagstruncatecharsfloatformatdateyesnojoin 二、Http请求3.1 属性method属性POST属性GET属性具有浏览框的表单的限制FILES属性 3.2 QueryDict对象 unit04一、HTTP响应二、模型2.1 概述2.2 配置2.3 创建模型2.4 数据类型2.5 数据迁移 三、管理器all()方法get()方法 四、QuerySetall()方法get()filter()first()last()order_by()查询谓语F函数 unit05一、模型values()values_list()only()queryQ函数exclude()count()aggregate()annotate unit 06一、HttpRequest对象 unit01 一、Django基础 1.1 什么是Django? Django是一个基于Python语言的、开源的、重量级的WEB开发框架。 Django适用于开发各类WEB应用程序包括但不限于电商网站、博客等。 Django的官网http://www.djangoproject.com 1.2 安装与卸载 1.2.1 Python与Django的版本 Django 版本Python 版本3.23.6, 3.7, 3.8, 3.9, 3.10 (在 3.2.9 中就已经加入了)4.03.83.93.104.13.83.93.103.114.1.3 添加4.23.8, 3.9, 3.10, 3.11, 3.12 (4.2.8 添加)5.03.10、3.11、3.12 1.2.2 安装 $ pip3 install django[version] 1.2.3 查看Django版本 $ python3 -m django --version $ django-admin --version 1.2.4 卸载 $ pip3 uninstall django 二、Django项目 2.1 概述 Django项目由一个或多个应用程序(指模块)组成在每个模块中有相对独立的路由、视图、模型、模板等。 2.2 创建项目 $ django-admin startproject projectname 2.3 启动项目 第一步在命令行输入以下命令 $ python3 manage.py runserver [[address:]port] 如 $ python3 manage.py runserver $ python3 manage.py runserver 8888 $ python3 manage.py runserver 0.0.0.0:8888 第二步启动浏览器输入地址即可 在Pycharm中启动Django项目 第一步鼠标右击manage.py然后从弹出的快捷菜单中选择Modify Run Configuration再在Parameters文本框中输入runserver [[address:]port] 第二步鼠标右击manage.py然后从弹出的快捷菜单中选择Run manage 2.4 项目的目录结构 djangoBasic/项目根目录 ├── db.sqlite3默认的sqlite3数据库文件 ├── djangoBasic内层目录 -- 包 │ ├── asgi.py │ ├── __init__.py │ ├── settings.py,项目配置文件 │ ├── urls.py,根路由文件 │ └── wsgi.py └── manage.py,入口文件 2.5 配置 # 项目的根目录 BASE_DIR Path(__file__).resolve().parent.parent# 是否开启调试模式:在开发环境中需要开启调试模式在生产环境中需要关闭调试模式 DEBUG True# 已安装且启动的应用程序(模块) INSTALLED_APPS []# 已安装且启用的中间件 MIDDLEWARE []# 项目的根路由 ROOT_URLCONF djangoBasic.urls# 模板(Templates)的配置 TEMPLATES []# 数据库的配置 DATABASES {}# 语言代码 LANGUAGE_CODE zh-Hans# 时区 TIME_ZONE Asia/Shanghai 三、URL 调度器 URL 调度器也称为URL路由它允许程序员自由的设计URL地址 3.2 定义URL路由 第一步在根路由文件(urls.py)中定义路由 path(router,view) URL地址为字母、数字、下划线、短横线的组合 如 path(hello/,????) 第二步定义(视图)函数 def function_name(request):...... 如 def hello(request):print(Hello Django) 相对完整的示例代码如下 # 函数 def hello(request):print(Hello,Django)# 路由 urlpatterns [# ....#代表的是当通过 http://127.0.0.1:8000/hello/访问时将调用hello函数path(hello/,hello), ] 运行结果如下 此时产生错误的原因是(视图)函数没有返回响应对象 在Django.http包中提供了HttpResponse类它用于完成Http响应所以 from django.http import HttpResponse # 函数 def hello(request):return HttpResponse(Hello,Django) 此时的运行结果如下 第三步通过链接或表单的action来访问相关的路由 此时产生了另外的两个问题 第一如果来访问http://127.0.0.1:8000时将产生404 错误 – 怎么解决 第二现在在urls.py中既有路由又有视图函数 – 不便于管理 – 如何便捷管理? 3.2 定义首页的路由 path(,视图函数) 示例代码 from django.http import HttpResponsedef index(request):return HttpResponse(Index Page)urlpatterns [# 首页路由path(,index), ] 3.3 便捷管理路由及视图函数 为了便于管理视图函数强烈建议将视图函数存储到views.py中然后再在urls.py中引用该模块即可 urls.py的示例代码如下: from django.contrib import admin from django.urls import path from . import viewsurlpatterns [path(admin/, admin.site.urls),path(, views.index),path(hello/, views.hello), ] views.py的示例代码如下: from django.http import HttpResponsedef hello(request):return HttpResponse(Hello Django)def index(request):return HttpResponse(Index Page) 对于静态的路由可以直接按需要进行定义但是对于动态的路由如访问某一个文章时的ID此时如何定义? 3.4 路径转换器 路径转换器主要解决动态路由的问题如 http://127.0.0.1:8000/user/id 路径转换器的基本语法 path(类型:参数名称/类型:参数名称,视图函数) 需要注意的是在定义视图函数时如果路由中存在路径转换器那么视图函数也必须存在相同名称的参数 3.4.1 int int类型的路径转换器自动匹配正整数类型为int如 path(users/int:id,views.userinfo), userinfo的函数代码示例如下 def userinfo(request,id):....... 3.4.2 str str类型的路径转换器自动匹配字符串/除外类型为str如 path(topic/str:topic/,views.topic), 3.4.3 slug slug匹配任意由字母、数字、短横线与下划线组成的字符其类型为str,如 path(blog/slug:title,views.blog), 3.4.4 uuid UUID的格式为8-4-4-4-12的十六位进制数字组成其类型为uuid Python的uuid模块 import uuid# 基于当前服务器ID和时间 uuid.uuid1() # 基于随机数 uuid.uuid4() 3.4.5 path path 匹配路径包括/ path(download/path:path/,views.download), 组合使用的案例 path(carts/str:username/id/int:id/,views.carts),path(str:username/int:id/,views.goods), 四、模块 每个Django项目至少存在一个模块(应用程序) 4.1 创建模块 $ python3 manage.py startapp app_name 如 $ python3 manage.py startapp users$ python3 manage.py startapp goods 4.2 注册模块 将创建的模块名称添加到配置文件的INSTALLED_APPS列表中如 INSTALLED_APPS [# ...goods,users, ] 4.3 分布式路由 所谓的分布式路由是将某个模块下以共同字符串开头的路由写在根路由文件中不同的部分写在模块内部的urls.py中当访问时系统将自动把两个部分的URL进行拼接。 include()函数位于django.urls模块内其作用是将当前路由与指定包含文件的路由进行拼接 include(URLS文件) # urls.py最简陋的样子 from django.urls import path from . import viewsurlpatterns [path(,views.index), ] # views.py最简陋的样子 def index(request):...... unit02 一、DTL 1.1 什么是DTL DTL(Django Templates Language)Django模板语言实际上就是将HTML页面与程序代码进行混合的技术。 1.2 模板配置 #模板配置 TEMPLATES [{# 模板的引擎BACKEND: django.template.backends.django.DjangoTemplates,# 配置模板文件的路径DIRS: [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,],},}, ] 1.3 render()函数 render()函数位于django.shortcuts模板内 from django.shortcuts import render render()函数的语法结构为 render(request,template_name,contextNone) request代表的HttpRequest 对象 template_name指要渲染的模板文件路径及名称 context指要传递到模板的数据其类型必须为dict 二、DTL 模板文件内可以使用注释、变量、标签等 2.1 变量 # 变量 {{ variable_name }} # 列表或元组 {{ variable_name.index }} # 字典 {{ variable_name.key }} #对象属性 {{ variable_name.property }} #对象方法 {{ varible_name.method s}} 2.2 标签 标签是指模板中进行逻辑控制的代码如分支结构、循环结构等标签的基本语法结构为 {% 标签名称 %}或者{% 开始标签名称 %} ... ... {% 结束标签名称%} 2.2.1 for标签 {% for variable in iterable %}...... {% endfor %} {% for variable in iterable %}...... {% empty %}...... {% endfor %} 在DTL中为循环提供了在其内部使用的变量 变量描述forloop.counter正向循环计数器从1开始forloop.counter0正向循环计数器从0开始forloop.revcounter反向循环计数器从1开始forloop.revcounter0反向循环计数器从0开始forloop.first当前循环为第一次循环时为Trueforloop.last当前循环为最后一次循环时为True 2.2.2 if标签 {% if condition %}... {% endif %}{% if condition %}... {% else %}... {% endif %}{% if condition %}... {% elif condition %}... {% elif condition %}... {% else %}... {% endif %} 2.2.3 表单 1.表单的action属性值为空或者省略action属性代表表单将提交给自身 2.表单的method属性值为空或者省略method属性代表表单的提交方式为get 2.2.4 csrf_token {% csrf_token %} 在以post方式提交的表单内必须在使用{% csrf_token %} 产生令牌 当在表单内添加{% csrf_token %}标签后将产生个名称为csrfmiddlewaretoken的隐藏域 input typehidden namecsrfmiddlewaretoken value7erwqas 2.2.5 静态资源 静态资源是网站用于布局的样式文件、图片文件及脚本文件。 2.2.5.1 静态资源的配置 # 静态文件的路由 STATIC_URL /static/# 静态文件的位置 STATICFILES_DIRS [BASE_DIR / static ] 2.2.5.2 访问静态资源 第一步通过{% load static %}标签加载static标签 {% load static %} 第二步在模板文件中通过static标签来访问静态资源 {% static 静态文件的的路径及名称 %} 被静态文件引用的文件(如在CSS文件内引用图片)因为该静态文件没有经过模板引擎处理所以不能使用{% static %}标签来加载 – 只能通过其相对路径实现 unit03 一、DTL 1.1 标签 include标签 include标签用于在一个模板文件中包含另外一个模板文件语法结构为 {% include 被包含的模板文件的位置及名称 with variablevalue variablevalue %} cycle标签 当每次遇到cycle标签时都会产生一个值第一次产生第一个值第二个产生第二值依次类推。当值用尽时再次遇到该标签时就产生第一个值。 {% cycle value1 value2 value3 ... %} 注释 {# 这是一个单行注释 #}{% comment %}第一行第二行 {% endcomment%} 1.2 过滤器 过滤器用于转换变量或标签参数的值其基本语法结构为 {{ 变量名称|过滤器:参数:参数 }} safe 当通过变量向模板文件传递HTML内容时在模板中将把HTML内容中的特殊符号进行替换操作如替换为gt;替换为lt;。 之所以进行替换的原因是为了防止XSSCross-site scripting攻击译为跨站脚本攻击。举例说明 假设在某个网站中对于某条新闻发表了评论内容如下 这篇新闻很好 script while(true){window.alert(哈哈哈); } /script当用户发表该评论后其内容将写入到服务器的数据库 — 不会产生任何问题 但是如果该评论被某个用户通过浏览器进行访问时那么其中的 script while(true){window.alert(哈哈哈); } /script 将被浏览器认为是JavaScript脚本 - - 并且为死循环 如何解决 – 将输入的、等替换为对于HTML实体如果此时再有用户输入以下评论 这篇新闻很好 script while(true){window.alert(哈哈哈); } /script 将输入的、等替换为对于HTML实体的结果为: 这篇新闻很好lt;scriptgt; while(true){window.alert(quot;哈哈哈quot;); } lt;/scriptgt; 在Django模板中如果认为传递到模板的HTML内容为安全内容则需要通过safe过滤器 striptags striptags过滤器用于去掉所有的HTML标记 truncatechars truncatechars过滤器用于截断字符串并且指定长度 floatformat floatformat过滤器用于对浮点数进行四舍五入 date date过滤器用于格式化日期和时间 格式描述Y年m月带有前导零d日带有前导零H小时带有前导零i分钟带有前导零s秒带有前导零 yesno 将True,False,None(可选)的值映射到以逗号分隔的字符串 join join过滤器使用指定的分隔符将列表成员连接成字符串 二、Http请求 当一个url被请求时Django会自动创建HttpRequest对象在该对象内包含的请求的元数据然后再加载相应的视图函数并且将HttpRequest对象作为视图函数的第一个参数 # 当前request参数代表的就是HttpRequest对象 def function_name(request):...... HttpRequest对象存在的属性除非另有说明外都是只读属性 3.1 属性 method属性 method属性用于获取HTTP的请求方式返回结果为英文大写字母 str HttpRequest.method POST属性 HttpRequest 对象的POST 属性将返回django.http.request.QueryDict的对象包含HTTP POST提交的数据其语法结构为 QueryDict HttpRequest.POST GET属性 HttpRequest 对象的GET属性将返回django.http.request.QueryDict的对象包含HTTP GET提交的数据其语法结构为 QueryDict HttpRequest.GET 具有浏览框的表单的限制 A.表单的提交方式只能为POST B.必须设置表单的enctypemultipart/form-data属性 form methodpost enctypemultipart/form-data...... /form FILES属性 FILES属性返回django.utils.datastructures.MultiValueDict对象 对于上传的文件超过2.5MB 将返回TemporaryUploadedFile对象否则返回InMemoryUploadedFile对象它们都继承自UploadedFile对象而UploadedFile继承自File对象所以可以访问File对象的name、size等属性 3.2 QueryDict对象 QueryDict对象继承自django.utils.datastructures.MultlValuDict对象MultiValue对象的方法有 get()用于获取指定key的值否则返回default MultiValue.get(key,defaultNone) getlist()用于获取指定key的值否则返回default list MultiValue.getlist(key,defaultNone) keys()返回由键名组成的列表 list MultiValue.keys() values()返回由键值组成的列表 list MultiValue.value() items() dict()返回由键名和键值组成的字典 dict MultiValue.dict() unit04 一、HTTP响应 每一个视图函数必须存在一个响应对象。 render()函数返回是HttpResponse对象它的基本原理是将传递的模板文件与字典数据进进行混合后返回一个字符串的结果该结果带入到HttpResponse对象的参数中。 HttpReponse对象位于django.http模板内 from django.http import HttpResponse 其构造函数的结构为 HttpResponse(content,content_typetext/html) 其中 content 代表的是响应的字符串信息 content_type 代表的响应的类型默认为text/html 常用的响应类型有 响应类型说明text/plain文本text/htmlHTMLtext/cssCSStext/javascript、application/javascriptJSapplication/jsonJSON JsonResponse对象 JsonResponse 对象继承自HttpResponse对象其作用是返回JSON响应语法结构为 #默认情况下只能为字典对象转换为JSON格式的字符串 #对于非字典数据(列表数据)必须将safe参数设置为False JsonResponse(data,safeTrue) 二、模型 2.1 概述 模型 Model是Django为了构建和操纵数据库而提供的抽象层。 模型用于表示和操纵数据表及其记录。 所以首先通过MySQL客户端创建数据库如: CREATE DATABASE IF NOT EXISTS knowbase;SHOW DATABASES; 2.2 配置 DATABASES {default: {# 数据库引擎的类型ENGINE: django.db.backends.mysql,# MySQL数据库服务器的地址HOST:127.0.0.1,# MySQL数据库服务器的端口号PORT:3306,# MySQL数据库服务器用户的用户名USER:root,# MySQL数据库服务器用户的密码PASSWORD:123456,# MySQL数据库服务器的数据库名称NAME: knowbase,} } 2.3 创建模型 模型需要在模块下的models.py文件中进行定义所有的模型都必须继承自django.db.models.Model类结构如下 class ClassName(models.Model):field_name models.数据类型([选项[,...]])...... 2.4 数据类型 数据类型描述CharField(max_length长度)VARCHARSmallIntegerField()SMALLINTPositiveSmallIntegerField()SMALLINT UNSIGNEDIntegerField()INTPositiveIntegerField()INT UNSIGNEDBigIntegerField()BIGINTPositiveBigIntegerField()BIGINT UNSIGNEDBooleanFieldTINYINT(1)FloatField(max_digits数字总长度,decimal_places小数点后的数字长度)FLOAT(M,D)DecimalField(max_digits数字总长度,decimal_places小数点后的数字长度))DOUBLE(M,D)TextField()LONGTEXTDateField()DATETimeField()TIMEDateTimeField(auto_now_add是否自动记录创建时间,auto_now是否自动记录修改时间)DATETIME 2.5 数据迁移 第一步生成移迁文件 $ python3 manage.py makemigrations 第二步数据迁移 $ python3 manage.py migrate add过滤器用于进行字符串的拼接如 {{ username|add:ABC}} !--假定username变量的值为Tom,那么拼接完的结果为 TomABC -- 三、管理器 在Django的模型中要实现数据表中记录的管理是通过管理器来实现的 Django为每个模型提供了一个名称为objects的管理器它作为模型的属性进行访问 模型类.objects 如 from .models import Bookprint(type(Book.objects)) all()方法 all()方法用于返回管理器的全部对象其语法结构为 QuerySet Manager.all() get()方法 get()方法用于获取单个对象如果没有符合条件的记录或者可以查询到多个记录都会产生异常 Object Manager.get(condition[,....]) 如果以主键字段进行查找的话可以写为 Book.objects.get(id5) # 或者 Book.objects.get(pk5) 四、QuerySet QuerySet称为查询集或者查询结果集用于表示与管理器相关查询结果。 Queryset可以进行切片、复制及过滤等操作 all()方法 all()方法用于返回结果集中的全部对象其语法结构为 QuerySet QuerySet.all() get() get()方法用于获取单个对象如果没有符合条件的记录或者可以查询到多个记录都会产生异常 Object QuerySet.get(condition[,...]) filter() filter()方法用于根据指定的条件对结果集进行过滤返回一个新的结果集 QuerySet QuerySet.filter(字段名称__查询谓语值[,...]) first() first()方法用于返回结果集中的第一条记录 object QuerySet.first() last() last()方法用于返回结果集中的最后一条记录 object QuerySet.last() order_by() order_by()方法用于对结果集进行排序 QuerySet QuerySet.order_by(字段名称[,....]) 降序排列时字段名称的写法为-字段名称 查询谓语 exact相等(区分大小写)可以在使用时直接用进行操作iexact相等不区分大小写gt大于gte大于等于lt小于lte小于等于in在指定值内字段名称__in(value,value,vlaue,..)range区间范围同字段名称__range(min,max)contains包含指定的字符区分大小写icontains包含指定的字符不区分大小写startswith以指定字符开头区分大小写istartswith以指定字符开头不区分大小写endswith以指定字符结尾区分大小写iendwith以指定字符结尾不区分大小写 F函数 from django.db.models import F 在查询时使用到某表内的字段时必须通过F函数将其引用 Book.objects.filter(sale_price__gte200F(cost_price)) unit05 一、模型 values() values()方法用于限制返回的字段可迭代对象为字典 QuerySet QuerySet.values(*fields) 结果样式如 QuerySet [{id: 1}, {id: 2}] values_list() values_list()方法用于限制返回的字段可迭代对象为元组 QuerySet QuerySet.values_list(*fields) 结果样式如 QuerySet [(1,), (2,)] only() only()方法用于限制返回的字段可迭代对象为模型实例 QuerySet QuerySet.only(*fields) 结果样式如 QuerySet [Book: Book object (1), Book: Book object (2)] query query属性返回当前查询结果集对应的SQL语句 str QuerySet.query Q函数 Q函数用于对查询表达式进行连接然后进行逻辑运算 from django.db.models import Q exclude() exclude()方法返回不符合指定条件的记录 Queryset QuerySet.exclude(条件表达式) count() count()方法用于获取结果集包含的记录总数 int QuerySet.count() aggregate() 聚合函数有Count、Max、Min、Sum和Avg位于 from django.db.models import Count,Sum,Avg,Max,Min dict QuerySet.aggregate(keyCount(field_name)) dict QuerySet.aggregate(keyMax(field_name)) dict QuerySet.aggregate(keyMin(field_name)) dict QuerySet.aggregate(keySum(field_name)) dict QuerySet.aggregate(keyAvg(field_name)) annotate aggregate()方法用于对整个Queryset进行聚合操作而annotate()方法用于对特定的字段进行聚合 Queryset QuerySet.annotate(keyCount(field_name)) Queryset QuerySet.annotate(keyMax(field_name)) Queryset QuerySet.annotate(keyMin(field_name)) Queryset QuerySet.annotate(keySum(field_name)) Queryset QuerySet.annotate(keyAvg(field_name)) unit 06 一、HttpRequest对象 path属性 path属性用于获取请求URL str HttpRequest.path get_full_path()方法 get_full_path()方法用于获取请求URL及查询字符串 str HttpRequest.get_full_path() redirect() 函数 redirect()函数用于跳转到其他URL from django.shortcuts import redirectredirect(to)
http://www.hkea.cn/news/14456619/

相关文章:

  • 淄博临淄网站建设wordpress怎么去掉文本下划线
  • 做网站全过程寿县城乡建设局网站
  • 学校响应式网站建设创建公司网页
  • 阿里云的网站空间中国临海建设规划局网站
  • cms建站程序简洁大气网站设计
  • 飞沐网站建设公司手机端网站开发
  • 建设公司网站有用吗网站数据统计工具
  • 网络营销推广网站收录做网站的公司跑了
  • 赚钱做任务的网站有哪些成都专做婚介网站的公司
  • 个人网站盈利微信网站怎么做的好名字吗
  • wordpress制作网站步骤新增接入 新增网站
  • 建设网站计划ppt模板欧洲购物网站排名
  • 以绿色为主色的网站模版浙江工程造价信息网
  • 学做效果图网站有哪些如何开发一个安卓app
  • 关于 建设 旅游网站 建议开微信公众号流程
  • 2024免费推广网站网站建设费是
  • 青岛城乡建设局网站首页如何建淘客网站
  • 余姚网站建设yyshj网站搭建类型
  • 网站建设及推广优化百度h5发布
  • 陕西建设官方网站介绍公司的简介
  • 智慧团建网站登录入口电脑版报名系统网站开发
  • 网站怎么icp备案网站管理与建设总结
  • 网站为什么要备案网站建设开发的条件
  • 网站建设的难点电子商务网站开发参考文献
  • 徐州模板建站定制网站房地产设计院
  • 网站信息化建设方案辽宁建设工程信息网诚信库怎么入库
  • 绵阳网站建设哪家好个人网站也要备案吗
  • 帝国cms小说阅读网站模板大埔做网站
  • 济南网站app开发的wordpress 最大上传文件大小 8m
  • 成品超市网站wordpress淘宝插件