Django的相关知识琐碎整理
js:JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。
是一种网络脚本语音,被广泛应用于web开发,常用来为网页添加各式各样的动态功能为用户提供更加流畅美观的浏览器效果。
常用:
1)嵌入动态文本于HTML页面
2)对浏览器事件作出相应
3)读写HTML元素
4)数据被提交到服务器之前验证数据
5)检测访客的浏览器信息
6)控制cookies,包括创建和修改等
7)基于Node.js技术进行服务器端编程
<th> <td> <tr>都是用于表格单元格显示,<table>是他们的上层标签,他们不能够单独使用,相当于属性标签。
<th>:定义表格内的表头单元格,此单元格中的内容通常为粗体
<tr>:表示表格中的某一行
<td>:表示表格中的某一列,需要嵌入在<tr>中
一行两列的表示如下:
<table>
<tr>
<td> </td>
<td> </td>
</tr>
</table>
------------------------------------------------
<td>,<tr>必须放入<th>内使用
<th>为表格标题
<caption>为首部说明
<thead>为表格头部
<tbody>为表格主体内容
<tfoot>为表格尾部
标准表格模型
<table>
<caption></caption>
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
</tr>
</tbody>
<tfoot>
<tr>
<td></td>
</tr>
</tfoot>
</table>
在html中,<%**********%>里面可以写程序语音
WSGI:python服务器的网关接口
ORM:对象关系映射,解决面向对象与关系数据库存在的互不匹配的现象
一般的web框架:浏览器->WSGI->路由系统->业务处理逻辑->数据库与模板耦合--->1):static文件包括HTML,CSS,JS等;2)ORM数据库
MVC架构:
Model:定义数据库的相关内容,一般放在models.py文件中
View:定义HTML等静态网页文件相关,即html、css、js等前端的东西
Controller:定义业务逻辑相关,主要代码
Django典型的业务流程:浏览器请求<-->WSGI-->URLs-->Views-->1)models(ORM,数据库);2)Templates(Static)
Django学习的内容:
1)目录结构规范
2)URLs路由方式
3)Settings配置
4)ORM操作
5)模板渲染
6)other
Django项目的目录结构:
1)文件夹-与项目名同名的配置文件
2)templates:存放html文件,也存放T文件
3)manage.py:项目管理文件
与项目名同名的文件夹中存放的文件有:
1)__init__.py
2)setting.py:主配置文件
3)urls.py:url路由文件
4)wsgi.py:网络通信接口
每个Django项目中含有多个app,相当与大型系统中的子系统、子模块、子功能,各个功能系统之间相互比较独立,但又存在着联系,所有app共享项目资源。
创建app命令:python manage.py startapp XXX
urls.py路由编写
from cmdb import views #导入对于app的views文件
urlpatterns=[
url(r'index/', views.index), #参数1:网页搜索路径;参数2:业务逻辑函数
]
views.py业务逻辑编写
from django.shotcuts import HttpResponse #导入HttpResponse模块
def index(request): # 封装了用户请求的所有内容
return HttpResponse('hello world') # 由这个类封装起来进行返回
此时,将index这个url指向了views里面的index()函数,它接收用户请求,并返回字符串
运行web服务
方法1:命令行 python manage.py runserver 127.0.0.1:8000
方法2:pycharm运行
仅仅返回字符串可不行,通常都是将html文件返回给用户,那么就需要在用户请求的时候,访问对应的html文件
views.py业务逻辑操作
from django.shortcuts import render
修改index中的返回函数
def index(request):
return render(request, 'index.html') # 当需要返回一个html文件时,就需要render进行包装
要让django知道我们的html文件在哪里,需要修改settings文件的内容,默认情况下无需修改,普遍适用
使用静态文件:前端三大块,html,css,js还有各种插件,他们齐全才是一个完整的页面,在django中,一般将静态文本存放在static目录中。
为了让django找到这个目录,依然需要对settings.py进行设置
STATIC = '/static/'
STATICFILES_DIRS=(
os.path.join(BASE_DIR, 'static'), #第一个参数是项目路径,第二个参数是设置目录的名字,因为是个元组,后面的逗号不能省略
)
也可以在html文件中,引入js文件了:
<script src='/static/js/jquery-1.12.4.js'><script>
接受用户发送的数据,用户同url发出一个访问请求,然后将要素齐全的html文件还给了用户浏览器,但web服务器和用户之间没有动态交互。
设计一个表单,让用户输入用户名和密码,提交给index这个url,服务器接收这些数据
返回动态页面:我们收到用户数据后,返回给用户的依然是静态页面,通常我们会根据用户的数据,进行处理后返回给用户。
改造views.py文件
# 创建用户信息列表,预定义两个数据,返回给浏览器,展示给用户
user_list = [
{'user':'jack', 'pwd':'123'},
{'user':'alice', 'pwd':'456'},
]
def index(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
temp = {'user':username, 'pwd':password}
user_list.append(temp)
return render(request, 'index.html', {'data':user_list})
# render方法接收第三个参数是后台返回给浏览器的数据,它是一个字典,data是你自定义的指针名字,他会被对应的html文档引用即本文的index.html
此时,框架已经基本成型,就差数据了用户存储数据,自带ORM框架操作数据库,并带有轻量级的sqlite3数据库。
1)注册:在settings中注册你的app,不注册它,数据库不知道给哪个app创建表
2)在settings中,配置数据库相关的参数,如果使用自带的sqlite,不要修改
3)编辑models.py文件,也是就MTV中的V,操作数据库相关
from django.db import models
#参数中,继承这个类,固定写法
class UserInfo(models.Model):
# 创建2个字段,最大长度32,类型是char
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=32)
4)通过终端创建数据库的表
python manage.py makemigrations
python manage.py migrate
5)修改views.py的业务逻辑
from cmdb import models
def index(request):
if request.method == 'POST':
username = request.POST.get('username', None)
password = request.POST.get('password', None)
#从用户那里获得数据保存到数据库
models.UserInfo.objects.create(user=username, pwd=password)
# 从数据库中读取所有的数据
user_list = models.UserInfo.objects.all()
return render(request, 'index.html', {'data':user_list})