Django基础知识二

别名

url

views 写一个对应的reg函数,这个函数进来第一件事应该是给客户端返回一个页面。

所以先写一个Html

这个action写的是/reg/

然后继续写函数

之所以上面的action处直接写/reg/可以使用,不用写上具体的ip+port是因为

当客户点击submit的时候,浏览器会将前面的Ip和端口自动补全,这个ip和端口是服务器提供的。

=======================================

别名这个操作是在url里写的。

因为url里的地址和html里的action地址对应,如果不对应则找不到,所以写个别名会很方便。

html里的写法:

上面这个Html写法是固定的,就这么写。

=======================================

视图函数

在视图函数中总会出现两个

一个是请求对象:request

一个是相应对象:httpresponse(")

其中在request中有个method方法

request.method 确认请求方式

request.GET 存放GET数据 get会显示在url中

request.POST 存放post请求数据 这两种都是以字典的形式

httpresponse(") 实例字符串对象,只能返回字符串

render 模板渲染

redirect 跳转

render和redirect只是反悔的方式 最终还是需要用httpresponse的方式返回字符串为介质传给客户端。

render的使用

return render(request,index.html)

模板语言:

渲染变量 {{ }}

渲染标签 { % % }

模板语言的目的:将变量嵌入到html页面中

字典{"times":t} 这个times是html中渲染的位置,t代表后端views.py中的变量

所以这个t就相当于上面那个datetime.datetime.now(),将这个传给了html页面

redirect

比如登录之后跳转到首页

上面红框,建议用get取,如果取不到为none,不会报错,用中括号取字典里的值如果取不到会报错。

下面红框为redirect的使用方法,后面跟一个路径。

render和redirect这个区别

render相当于渲染

redirect是路径,如果用的render只是返回一个网页,刷新之后还会跳到登录页面。

redirect则不然,相当于path做了更改。redirect之后跳到index首页的时候,index函数里

应该从数据库取到用户对应的个人信息。如下:

如果用render的话,没有走index函数,则直接返回一个网页,没有找到模板语言中的变量。

所以总结为:第一如果用render,刷新会变到之前的网页,第二个区别是没有走index函数。

所以说redirect走的是路径,会将函数走一遍,render只是返回一个html。

============================================================

模板

模板就是html+逻辑代码

深度查询

在views函数中如果有列表,字典,将这些传给了前端,如果想在模板中取出单独的某一个值,

可以用句点号来取,如下图

如上图,在函数中写一个类,然后实例化3个对象,然后返回一个列表,

列表中写三个对象,将这个集合对象返回给前端。

如上图,可以通过locals()来简写,效果同上面那行一一对应的。

单独取上面的对象,通过列表名querySet来取,结果为egon

----------------------------------------------------

循环取

{% for person in querySet %} #两段注意空格
    <p> {{ person.name }}</p> #注意写大括号
{% endfor %}

判断语句

1 {% if i > 100 % }
2     <p>100</p> #如果i大于100 直接打印100
3 {% elif i > 50 %} #注意 比大小的表达式必须也空格
4     <p>大于50小于100</p>
5 {% else%} #否则打印变量i
6     <p>{{ i }}</p>
7 {% endif%} #判断结束

======================================================================

数据库与ORM

对象关系映射

目的:通过Python代码实现对数据库的增删改查

如上图,orm原理相当于,一个类就相当于一个表,一个对象就相当于一行内容

一个属性就相当于一个字段。对表的操作就是对一个类和对象操作。这里面有一个映射关系。

通过映射关系翻译成sql语句。

如上图,对应关系。实例化一个对象,就是创建一条记录。

p.save() 相当于保存一下。

数据库配置

sqlite3

mysql

配置的时候绑定了什么引擎,它就会翻译成相应的sql语句。

如果需要更改数据库的时候,迁移一下就OK。

如上图,这次先用sqlite3,用什么数据库无所谓,因为不需要写sql语句,只是用orm操作。

项目流程:

设计表关系:

create table book(

id int primary key,

name varchar(20),

price double(5,2),

)

首先在models.py里创建一个类,这个类就是表名。

创假的这个类必须继承django的orm的一个类,不然无法使用。

继承models.Model

如上图,这个表结构写好。

现在在cmd中执行两条命令:

python manage.py makemigrations 建立对应关系

python manage.py migrate 执行sql语句

此时还不需要启动项目,等一切准备结束之后再启动项目。

在应用目录的migrations目录中生成了一个文件,django默认在表中设置一个id为名字的主键,有自增(AutoField),PRIMARY_KEY=True.

如果自己创建的时候创建了主键,那么系统不会在给你创建主键。

在pycharm中下载好插件之后

将文件拖过去 即可打开这个表,在pycharm中查看这个表。

配置静态文件:

将所有bootstrap,js等文件都放到static中。

如下图,在模板文件中写上如上两点,能够导入静态文件。

上图,static是别名,后面跟具体文件。

在django中,某个button按钮外面套一个a标签,在href中写上你想跳转的网页路径,

如果是同一个网站的路径,可以简写/index/等等,然后在url中 写上/index/对应的相应的函数即可。

所有访问服务端请求默认都是GET请求。

时间: 2024-07-30 10:09:14

Django基础知识二的相关文章

Django[基础知识]

Python功能最全的WEB框架:Django,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. 使用Django需进行以下操作: 1.创建Django项目,创建方式有两种. a.命令操作: django-admin startproject  dg_web   //dg_web为项目名称 b.直接在开发环境IDE下进行新建django项目 创建项目之后的文件目录如下: 2.在创建的项目下建立功能程序,操作如下: 命令行:python manage.py startap

ASP.NET Core 2.2 基础知识(二) 中间件

原文:ASP.NET Core 2.2 基础知识(二) 中间件 中间件是一种装配到应用管道以处理请求和相应的软件.每个软件都可以: 1.选择是否将请求传递到管道中的下一个组件; 2.可在调用管道中的下一个组件前后执行工作. 管道由 IApplicationBuilder 创建: 每个委托都可以在下一个委托前后执行操作,.此外,委托还可以决定不将请求传递给下一个委托,这就是对请求管道进行短路.通常需要短路,是因为这样可以避免不必要的工作.比如: 1.静态文件中间件可以返回静态文件请求并使管道的其余

Java基础知识二次学习-- 第一章 java基础

基础知识有时候感觉时间长似乎有点生疏,正好这几天有时间有机会,就决定重新做一轮二次学习,挑重避轻 回过头来重新整理基础知识,能收获到之前不少遗漏的,所以这一次就称作查漏补缺吧!废话不多说,开始! 第一章  JAVA简介 时间:2017年4月24日10:23:32 章节:01章_02节 内容:jdk的配置与安装 完成情况:已经完成,cmd中javac提示出相关命令 时间:2017年4月24日10:30:39 章节:01章_04节 内容:输出HelloWorld 完成情况: 已经完成 javac先将

Java基础知识(二)

1,字符串 new String("abc")创建了几个对象? 一个或两个,如果常量池中原来有"abc",则只创建一个对象:如果常量池中原来没有字符串"abc",那么就会创建两个对象. String s="abc"; String s1="ab"+"c"; System.out.println(s==s1); 输出 true ,因为"ab"+"c"

Powershell基础知识(二)

上一节主要介绍Powershell可发现,面向对象,一致性等特性,以及Powershell命令是基于.Net对象等重要概念,以及Powershell命令的命名规范,详细内容点击这里. 这一节的Powershell基础知识主要包含以下知识点 获取命令的摘要信息. 获取命令的帮助信息. 总结. 获取命令的摘要信息 Powershell命令 Get-Command 可检索当前shell中所有可用的命令名称.在Powershell提示符输入 Get-Command ,输出的内容类似以下内容(以下只写出输

django基础知识笔记(二)

一,深度搜索 二,过滤器fiter

django基础知识之模型查询:

查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主要讨论如下知识点 查询集 字段查询:比较运算符,F对象,Q对象 查询集 在管理器上调用过滤器方法会返回查询集 查询集经过过滤器筛选后返回新的查询集,因此可以写成链式过滤 惰性执行:创建查询集不会带来任何数据库的访问,直到调用数据时,才会访问数据库 何时对查询集求值:迭代,序列化,与if合用 返回查询

django基础知识之Response对象:

HttpResponse对象 在django.http模块中定义了HttpResponse对象的API HttpRequest对象由Django自动创建,HttpResponse对象由程序员创建 不调用模板,直接返回数据 #coding=utf-8 from django.http import HttpResponse def index(request): return HttpResponse('你好') 调用模板 from django.http import HttpResponse

django基础知识之后台管理Admin站点:

Admin站点 通过使用startproject创建的项目模版中,默认Admin被启用 1.创建管理员的用户名和密码 python manage.py createsuperuser 然后按提示填写用户名.邮箱.密码 2.在应用内admin.py文件完成注册,就可以在后台管理中维护模型的数据 from django.contrib import admin from models import * admin.site.register(HeroInfo) 查找admin文件:在INSTALLE