11月24日学习内容整理:django基础,安装,创建项目,设置配置文件中的信息,简单的登录验证举例
一、概念类
1、首先要知道django是python中为我们提供的Web框架,其余还有Tornado、Flask
》》》三者的区别:
Tornado:包含了socket服务端,URL功能(就是对于客户端返回的不同请求做出不同的处理),返回内容(就是模板渲染,给客户端返回一个文件,本质上就是字符串替换)这三部分都是自己的
Django:socket服务端是采用了第三方软件,其余都是自己的,所以我们在和客户端进行数据交互时就无法使用我们熟悉的socket模块来做(比如什么recv send之类的),只能用Django为我们提供的方法来(我理解这些方法也就是和第三方软件所做的接口,从而达到我们能够接受客户端的数据同时也能将处理好的数据返回给客户端)和客户端进行交互
Flask:只有URL功能是自己的,其余两个都是采用第三方的
》》》为什么要用Django
因为大而全,框架本身集成了ORM、模型绑定、模板引擎、缓存、Session等诸多功能
二、如何创建一个Django项目
1、安装模块
pip3 install django
python -m pip install django
2、创建文件:cmd中
django-admin startproject mysite
在哪个目录下mysite文件夹就创建在哪个目录下
3、运行:cmd中
python manage.py runserver
后面还可以跟参数,这个之后再介绍,这样就会启动django项目了
4、Django项目的组成
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
templates
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [], # 在这里进行设置,设置为os.path.join(BASE_DIR,"templates")
注意BASE_DIR就是当前文件所在的Django项目文件夹,目的是告诉Django去哪找对应的html文件
在url.py文件中引入的话直接用引号表示文件名就可以了,Django会自己去我们所设置的目录下去找:
return render(request, "entry.html")
2、中间需要注释掉一行
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
# 'django.middleware.csrf.CsrfViewMiddleware', 这一行
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
3、设置css文件和js文件等渲染效果的文件,我们通常叫做静态文件路径
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"), # 静态文件存放位置
]
注意可以是元组或者是列表,但我们推荐列表,元组的话注意一定要加逗号
在模版文件中引入css或者js文件时:
<link rel="stylesheet" href="/static/entry.css">
<script src="/static/jquery-3.2.1.min.js"></script>
<script src="/static/entry.js"></script>
四、三种基本方法
1、HttpResponse
以二进制的形式返回给客户端指定的内容,类似于encode转换为字节用来网络传输,但要注意此方法不能传递模版文件
2、render
渲染模版文件,专门用来传递模版文件的
1. render(request, "xx.html")
2. render(request, "xx.html", {"num": 123}) num是模版语言中的占位符,可以是任意内容,模版语言下面再介绍
3、redirect
执行跳转操作,比如点击某个按钮就可跳到另一个网页,就是来实现这样的功能
redirect(网址)就会跳转到指定网址
五、request参数,通常是对于URL功能来说,每个函数都要用到的形参
1、request
指的是代表了请求的所有内容
2、request.method
输出请求类型(GET POST),依据这个可以对请求加以判断
3、request.POST
就拿到了POST请求发过来的数据,依据这个对数据进行处理(比如说传过来的是字典,那么就可以request.POST.get(key)来取对应的value值)
补充::::form表单标签在往服务端发送数据时,首先input标签一定要有name属性值,其次form的action属性要对应具体的路径(比如"/login/"可能代表的就是登录页面的路径),还有method属性要指明请求类型POST
六、模版语言
1、for循环
{% for i in xx %}
{{ i }}
{% endfor %}
2、占位符
{{ 变量名 }}
这个变量名可以是任意内容,当用两个大括号表示的时候Django就会识别出这是个占位符,当渲染模版文件就会显示出指定的内容,没有指定的话就不显示,例如:
return render(request,"entry.html",{'error_msg':"用户名或密码错误"})中这个error就是占位符
<div style="color:red;margin-left: 20px">{{ error_msg }}</div>在模版文件中就可以这样表示