Django单表的增删改查
1.Django下载 命名行 pip install django==1.11.16 pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ pycharm settings 解释器 点+号 输入Django 选择版本 下载 2.创建项目 命令行 django-admin startproject 项目名 pycharm file new project 选择Django 输入项目名称 选择解释器 输入APP名称 创建项目 3.启动项目 命令行 切换到项目的根目录下 manage.py python manage.py runserver # 127.0.01:8000 python manage.py runserver 80 # 127.0.01:80 python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80 pycharm 修改配置 点三角启动 dj 4.配置文件 数据库 静态文件 STATIC_URL = '/static/' # 别名 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') , ] 模板 TEMPLARTES DIRS [os.path.join(BASE_DIR, 'templates')] 中间件 注释掉'django.middleware.csrf.CsrfViewMiddleware' 5.urls.py 写url和函数的对应关系 urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'login/', views.login), url(r'index/', views.index), url(r'test/', views.test), ] 6.函数 参数: request 跟请求相关的内容 request.method 请求方式 GET POST PUT request.POST form表单提交POST请求传递的数据 {} [] get request.GET URL地址上的参数 {} 返回值: from django.shortcuts import HttpReponse,render,redirect HttpReponse('字符串') 返回一些字符串 render(request,'模板的文件名') 返回一个完整的HTML页面 redirect('要跳转的地址') 重定向 Location : 地址 7.app 创建APP 命令行 python manage.py startapp app名称 pycharm tools run manage.py task startapp app名称 注册APP INSTALLED_APPS = [ 'app01' 或者 'app01.apps.App01Config', ] 8.form表单 action = '' method ='post' action 提交的地址 method 请求方式 所有的input标签要有name属性 一个input标签的type='submit' 或者 button 9.get 和 post的区别 get 获取一个页面 路径/?name=alex&pwd=alexdsb request.GET post 提交数据 request.POST 10.Django使用mysql数据库的流程: 创建一个mysql数据库 在settings中配置DATABASES ENGINE : mysql ; NAME: 数据库的名称; HOST: IP '127.0.0.1' PORT: 3306; USER: 用户名; PASSWORD: '密码'; 告诉Django使用pymysql连接数据库 在与settings同级目录下的__init__.py写代码: import pymysql pymysql.install_as_MySQLdb() . 写表 在app下的models.py中写类(继承models.Model) class User(models.Model): # 默认表名 app01_user name = models.CharField(max_length=32) # varchar(32) pwd = models.CharField(max_length=32) def __str__(self): return self.name 执行数据库迁移的命令 python manage.py makemigrations # 记录models的变更记录 python manage.py migrate # 把变更记录的操作同步到数据库中 11.ORM 对象和关系型数据库的一个映射 同过操作对象的方式操作数据库的内容 对应关系 类 ___> 表 对象 ___> 记录 数据行 属性 ___> 字段 ORM的功能: 操作数据表 操作记录 具体的操作 from app01 import models # 获取所有数据 models.User.objects.all() # __> QuerySet 对象列表 # 获取单个对象 获取不到数据或者拿到多条数据就报错 models.User.objects.get(name='alex',pwd='111') # __> 对象 # 获取满足条件的所有对象 models.User.objects.filter(name='alex',pwd='111') # __> QuerySet 对象列表 单表的增删改查 1.展示 model class Publisher(models.Model): # app01_publisher pid = models.AutoField(primary_key=True) # pid 主键 name = models.CharField(max_length=32) # 出版社名称 def __str__(self): return self.name 设计URL from app01 import views # 展示出版社 url(r'^publisher_list/',views.publisher_list ), 写函数 from app01 import models # 展示出版社 def publisher_list(request): # 从数据库获取所有出版社对象 all_publisher = models.Publisher.objects.all() return render(request, 'publisher_list.html', {'all_publisher': all_publisher}) 写模板 <table border="1"> <tr> <th>ID</th> <th>名称</th> </tr> {% for foo in all_publisher %} <tr> <td>{{ foo.pk }}</td> <td>{{ foo.name }}</td> </tr> {% endfor %} </table> 模板语法 {{ 变量 }} 循环 {% for i in all_publisher %} {{ forloop.counter }} # 当前循环的测试 {% endfor %} 2.增加、删除、编辑 见代码 3.新增ORM操作 # 新增数据 ret = models.Publisher.objects.create(name=new_name) # ret 是对象 # 删除数据 models.Publisher.objects.get(pk=pk).delete() # 修改数据 obj_list = models.Publisher.objects.filter(pk=pk) obj = obj_list[0] obj.name = new_name # 内存中修改数据 obj.save() # 向数据库提交,保存到数据库中