对于之前所学的project 关于两点是非主流的
-app01自己创建的目录 实际上可以通过代码批量生成
cmd:python manage.py startapp app01
-SQLHelper封装SQL语句 实际应用上是用ORM操作(原生sql)即可
Django: -urls.py路由系统
-view视图
-templates模板
-ORM(类-表 对象-行 pymysql链接数据库)
Torando:
-路由
-视图
-模板
-自由 :pymysql ;sqlAchemy
Flask:
-路由
-视图
-模板(选择第三方组件)
-自由:。。。
创建Django目录的命令
cmd- django-admin srartproject mysite
cd mysite
django manage.py startapp app01
关于Django的project
-admin Django自带的后台管理相关的配置
-modal 写类 根据类创建数据库表
-test 单元测试
-views 业务处理
关于路由系统
记住五个部分
1,路由分发 include 创建不同项目的URL , 即不想和其他项目的app-xx的url名字撞车
from app01 import views path('app01/',include('app01.urls')),
2,路由分发 正常模式 即在urls.py中写入一个url找到一个views里的函数
3,url的终止符 如果不加终止符那么一个长url和一个短url全部相同的话,长的url也可以找到短url的函数
有两种 一个$ 一个 /
path('index$', views.index), path('indax/',views.index),
4正则表达式 ,通过一个url可以分支出多个 和 “?+参数” 的区别是它的搜索权重比较高
from django.urls import re_path re_path('edit/(w+)', views.edit),
re_path('edit/(w+)/(w+)/', views.edit),
5伪静态 即在url后面+html 其实效果不变
re_path('edit.html$',views.edit),
根据名称可以反向生成URL(一般用于权限管理)了解即可
1. 在Python代码中
from django.urls import reverse
v = reverse('n1',kwargs={'a1':1111})
print(v)
2.
url(r'^login/', views.login,name='m1')
{% url "m1" %}
ORM操作
1在MySQL里面创建数据库、
2.在setting.py里面找到注释掉原来的DATEBASES,创建新链接
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME':'day7', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': 3306, } }
3在__inti__.py里面将pymyql替换MYSQLDB
import pymysql pymysql.install_as_MySQLdb()
4,现在就可以在models.py里面创建表了
class classes(models.Model): title = models.CharField(max_length=32) class teacher(models.Model): name = models.CharField(max_length=32) class student(models.Model): name = models.CharField(max_length=32) classes_id = models.ForeignKey('classes', on_delete=classes, null=True) class teacher2dclasses(models.Model): teacher = models.ForeignKey('teacher',on_delete=teacher,null=True) classes = models.ForeignKey('classes',on_delete=classes,null=True)
ORM的增删改查
# 增加 # models.UserInfo.objects.create(username='kk',password='123') # models.UserGroup.objects.create(title='xswl') # 删除 # models.UserInfo.objects.all().delete() # 修改 # models.UserGroup.objects.filter(id='2').update(title='nmsl修改') # 查找 # user_list = models.UserGroup.objects.all() user_list = models.UserGroup.objects.filter(id=2)