-
标准的Web开发的框架: MVC
M — Model
V — View
C — Controller -
Python对MVC进行微调 : MVCT
M— Model — 数据库
V — View — 逻辑控制
C —Controller — URL路由、URL控制
T — Templates — 前端的HTML页面 -
用户访问Web经过MVCT处理的流程:
1) 用户输入URL会对Web服务器一个Request请求
2) Request被Web接收后,会对访问的URL做一个过滤,如果找不到匹配的URL表达式,直接返回404错误;如果有匹配的,直接将请求路由给views中的某一个函数。
3) View的函数对请求做业务的判断,返回数据给用户,有三种场景:
A: 直接访问文本 — 封装到httpResponse中
B:返回静态的HTML页面,
C:在数据库中找到相应的数据,填充到HTML模板页面中,返回给用户 -
基本结构:
一个网站就是一个Project
因为一个网站可能包含多个模块,一个模块相当于一个APP -
创建一个Hello,world页面
1) 创建一个项目djDemo02
方法01:在Pycharm中直接创建
方法02:在CMD中输入命令【输入命令前确保当前目录在D:\python\project中】:
django-admin startproject djDemo02
2) 在djDemo02的项目中创建一个App, 使用如下命令
python manage.py startapp app01
3) 在djDemo02的APP的Views中创建一个函数index
from django.http import HttpResponse
def index(request):
text = “Hello,World!”
return HttpResponse(text)
4) 在URLS中配置URL路由
from django.contrib import admin
from django.urls import path
from app01 import views
urlpatterns = [
path(‘admin/’, admin.site.urls),
path(’’, views.index)
] -
加载学生信息在页面展示
1) 在views中使用函数读取文件中所有的学生信息 — 最外层–List --内层–List–使用数字 Dict-key
2) 在Views的函数中返回render(request, ‘student.html’, context = {“students”: 集合的名称 })
3) 在模板[HTML文件]中使用模板语言遍历出数据
逻辑处理:
{% for student in studnets %}
{% endfor %}
{{ student.0 }}
4) 在urls中配置Path -
URL传参数
1) 使用URL: http://127.0.0.1:8000/student/detail/95012/
2) 使用传统的?传递:http://127.0.0.1:8000/student/detail/?sno=95012 -
把网站让其他计算机访问
1)需要运行 python manage.py runserver 0.0.0.0:8000
2) 在setting中设置AllowedHosts ,添加访问的主机 【‘192.168.182.135’,‘www.abc.com’】
hosts文件路径: C:\windows\system32\drivers\etc\hosts -
在urls中使用 re_path — 对url控制更加精细
比如: 传学号的参数,参数必须是95开头的5位数字
在urls中:
from django.urls import re_path
re_path(‘student/detail/(?P[9][5]\d{3})/’, views.student_detail), -
如果访问一个网站的首页,首页如果没有监测到登录,直接跳到登录页面
from django.shortcuts import redirect
return redirect(’/login/’) -
djDemo04 有三个APP:
1)home — 首页 /
2) Student — 学生模块 /student/
3) book — 图书模块 /book/ -
urls – 命名空间
第一步:在urls中添加app_name
app_name = “book”urlpatterns = [
path(’’, views.index, name=“index”),
path(‘detail/’, views.detail, name=“detail”),
path(‘login/’, views.login, name=“login”),
]
第二步:跳转的时候,加上app_name
return redirect(reverse(‘book:login’)) -
django 基于数据库开发
操作数据库有两种模式:
1) 原生的SQL语句
2) ORM
14。django如果操作数据库,有很多的接口— Django中MySQL驱动程序
1)mysql-Python : 也就是MySQLdb, 是对C语言操作mysql的一个简单封装,遵循了Python DB API v2,
但是只支持Python2,目前还不支持Python3
2)mysqlclient: 是Mysqldb的另外一个分支,支持Python3并且修复了一些Bug,
3) pymysql : 纯Python实现的一个驱动个,因为是纯Python写的,因此执行效率不如MysqlClient, 也因为是 Python写的,和Python代码无缝衔接
4) Mysql connector for Python : mysql官方提供的使用python连接mysql的驱动
- 部署pymysql
- pip install pymysql
- 在项目APP的__init__中加入如下代码:
import pymysql
pymysql.install_as_MySQLdb()
3)配置django连接数据库的信息:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'StudentDB',
'USER': 'root',
'PASSWORD': '123.com',
'HOST': '192.168.182.10',
'PORT': '3306',
}
}
DB_HOST = '192.168.182.10'
DB_USER = 'root'
DB_PASSWORD = '123.com'
DB_Name = 'StudentDB'
- 在DataTables中实现数据的查看、修改、
1) 确保DataTables中的按钮能正常工作!
2) — 先处理查看学生详细信息–
准备01: 准备好 student_detail.html
准备02: 为查看在views里面写函数 –
准备03: 添加urls
path(‘detail/’, views.student_detail, name=“detail01”),
准备04: 为点击按钮添加View的函数
location.href = “{% url ‘student:detail01’%}?sno=” + currentSNO