zoukankan      html  css  js  c++  java
  • django内容回顾:

    Django

    1. 下载安装

      1. 命令行

        pip install django==1.11.26 -i 源

      2. pycharm

    2. 创建项目

      1. 命令行

        django-admin startproject 项目名

      2. pycharm

        file ——》 new project ——》 django ——》 输入项目路径 ——》 选择解释器 ——》 输入一个app的名称 ——》 create

    3. 启动项目

      1. 命令行

        cd 项目的根目录

        python manage.py runserver # 127.0.0.1:8000

        python manage.py runserver 80 # 127.0.0.1:80

        python manage.py runserver 0.0.0.0:80 # 0.0.0.0:80

      2. pycharm

        点绿三角 (没有右键启动)

    4. settings的配置

      中间件中注释 csrf的中间件 可以提交POST请求

      静态文件的配置:

      STATIC_URL = '/static/'

      STATICFILES_DIRS = [

      os.path.join(BASE_DIR,'static')

      ]

      DATABASES 数据库

      INSTALLED_APPS = []

      TEMPLATES 模板 DIRS = [os.path.join(BASE_DIR,'templates')]

    5. APP

      创建APP

      python manage.py startapp app名

      注册APP

      INSTALLED_APPS = [

      'app名'

      或者

      'app名.apps.类' # 'app01.apps.App01Config',

      ]

    6. urls.py

       from app01 import views
       
       urlpatterns = [
       
           url(r'^publisher/',views.publisher),
           url(r'^add_publisher/',views.add_publisher),
           url(r'^del_publisher/',views.del_publisher),
           url(r'^edit_publisher/',views.edit_publisher),
       ]
    7. views.py

       from django.shotcuts import HttpResponse,render,redirect
       
       def publisher(request):
        # 业务逻辑
        # 返回响应
        # HttpResponse('字符串')   # 返回的是字符串
        # render(request,'模板的名字',{'k1':v1})   # 返回的一个页面
        # redirect('路径')   # 重定向
       
    8. 模板语法

        render(request,'pub.html',{'all_publishers':all_publishers}) 
       {{ all_publishers }}
       
       {% for i in all_publishers %}
       
        {{ forloop.counter }}
        {{ i }}
        {{ i.id }} {{ i.pk }}
        {{ i.name }}
       
       {% endfor %}
       
       
    9. form的注意点:

      1. form标签的属性 action='提交的地址' method='post' novalidate 取消input标签自带的校验

      2. input标签必须要有name属性 有些标签有value值

      3. 需要有一个button按钮 或者 type='submit'的input

    10. get 和 post

      get : 获取一个页面

      途径:

       1. 直接在浏览器的地址栏中输入地址 回车
      1. form表单 不指定method

      2. a标签

      参数: ?k1=v1&k2=v2

      获取参数: request.GET.get('k1')

      post : 提交数据

      途径:

       1. form表单  method = 'post'

      获取数据: request.POST.get('k1')

    11. Django使用MySQL数据库的流程:

      1. 手动创建一个MySQL数据库

      2. 配置数据库

         ENGINE   MySQL
         NAME 数据库的名字
         HOST   ip
         PORT   3306
         USER   用户名
         PASSWORD 密码
      3. 在与settings同级目录下的__init__.py中写代码:

         import pymysql
         pymysql.install_as_MySQLdb()
      4. 写models:

         form django.db import models 
         class Publisher(models.Model):
          name = models.CharField(max_length=32)
         
      5. 执行迁移的命令

         python  manage.py  makemigrations  # 检查已经注册的APP下面的models.py的变更情况
         python manage.py migrate   # 执行迁移
      6. ORM

        对象关系映射

        对应关系:

        类 _> 表

        对象 _> 数据行(记录)

        属性 _> 字段

        ORM能做的事情:

        1. 对数据做修改

        2. 对表做修改

        ORM的操作

         from app01 import models 
         
         # 查询
         models.Publisher.objects.all()  # 查询所有的数据 QuerySet 对象列表
         models.Publisher.objects.get(name='xxx')  # 查询一条数据 只能查有且唯一的数据
         models.Publisher.objects.filter(name='xxx')  # 查询所有满足条件的数据 对象列表
         
         # 新增
         obj = models.Publisher.objects.create(name='xxxx')
         
         obj = models.Publisher(name='xxxx')
         obj.save()  # 保存到数据库
         
         # 删除
         models.Publisher.objects.filter(pk=pk).delete()   # 批量删除
         models.Publisher.objects.get(pk=pk).delete() # 单条数据的删除
         
         
         # 更新
         models.Publisher.objects.filter(pk=pk).update(name='xx')  # 批量更新
         
         obj = models.Publisher.objects.get(pk=pk)
         obj.name = 'xxxx'
         obj.save()  # 保存到数据库

      外键

      一对多的关系

       
       class Book(models.Model):
           name = models.CharField(max_length=32)
           pub = models.ForeignKey('Publisher', on_delete=models.CASCADE)
         
       
           """
          on_delete 在2.0版本之后是必填的
          on_delete=
              models.CASCADE 级联删除
              PROTECT   保护
              SET(1)    
              SET_DEFAULT 设置为默认值设置为某一个值
              SET_NULL   设置为空
              DO_NOTHING 什么都不变
          """
           

      查询

       all_books = models.Book.objects.all()
       
       for book in all_books:
           print(book)
           print(book.id)
           print(book.pk)
           print(book.name)
           print(book.pub)  # 所关联的出版社对象   对象.外键
           print(book.pub_id)  # 所关联的出版社对象的id   对象.外键_id

      新增

       models.Book.objects.create(name=book_name,pub=models.Publisher.objects.get(pk=pub_id))
       obj = models.Book.objects.create(name=book_name, pub_id=pub_id)

       

      编辑

       book_obj.name = book_name
       book_obj.pub_id = pub_id
       # book_obj.pub = 出版社的对象
       book_obj.save()
       models.Book.objects.filter(pk=pk).update(name=book_name,pub_id=pub_id)
  • 相关阅读:
    【待整理】转义字符
    关系运算符 与 逻辑运算符
    浏览器相关
    正则表达式
    样式定义——多重浏览器
    事件
    属性定义
    数组
    日期
    构造函数
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12037420.html
Copyright © 2011-2022 走看看